How to share menus and blocks across domains, but not users and content data?
There really is not "Easy" way but you are on the right track. From your description it sounds like you need to be using Domain Access. In order to share content all sites need to be using the same shared database. As for content/users, you will have to configure your data and users to not be shared across all domains. These are all permission settings that can be set from Domain Access. Set each user to only have access to a specific domain. And set each content type to be visible for the domain it was created under.

With domain access you can have a different theme set up for each domain, so that will help you have a different "backend" experience for your authenticated users. So to answer your question, Domain access is the most effective apporach for this type of scenario. Its all just a matter of configurations and permission settings.