How to restrict users to certain Content Types?
It looks like you should give it a try to use the Group module.
You'd enable the gnode submodule, and for each group type you would define the appropriate permissions (view, edit, delete, etc) for the various Content Types.

From the details included in your question, it seems that possibly you'd only need 1 group type. And if you then would create 1 group for each of the Content Types involved, you might be close to a working solution.

More info: What's the purpose of the Group module and how to get started with it?