Mark contacts/companies/deals as private to restrict access to certain users

This is very important. We have two people who work with each client and only allowing visibility at the owner or team level is not of any use.
This makes it difficult to secure information that should be confidential.
What is needed is to be able to allocate more than one “owner” to a contact, company or deal when on that contact, company or deal rather than at a global level.
Secondary issue

When using the data base as a referral list we would like to have some companies visible to all but still have an “owner” and this isn’t possible.