The workflow stuff you should be able to do by setting a Workflow criterion to not run the WFs unless Case Profile=[whatever_the_customer_profile_is]. Assuming Case Profile is a selectable value.
re: the blocking off of customer cases, is that due to sensitive information or clutter? If the latter, you could probably set up some dashboard views/list views that exclude customer cases and have the internal people work from that.
Wouldn't solve the problem of the customer cases coming up in global search, but should be able to keep internal case users mostly away from customer cases that way.
If it is due to sensitive information that you need the internal case users not to see, might be out of luck. I don't think you can do a hard filter by type.