We have decided to tackle this problem a bit differently but I think it may help you.
Many of our Contacts work out of a branch office or even from their homes so we have an address in Contacts independent from that in companies. I do have a button that will pull the address from Companies if that's the one they plan to use.
David -- I was thinking of having that option as well, for those working independently (an "Address override" of sorts).
For those linked to companies with multiple addresses though, what if I created a Calculation field in Contacts that depending on Location field entry (I renamed to "Address_Selection") it either pulls the Primary or the Secondary address from the Company table? Would that Calculation field take up too much processing power?
In some cases Contact is related to Address by address primary key, while Address to Company.
They may be joined by a separate Account table so same structure and logic can be used for Customers.
A company can have many addresses, but contact is usually associated with one specific address, the work place.
When contact changes company, the data usually changes. Like phone number, email, etc.
So it's not as easy as linking to another company.
You might consider a table of addresses that can be linked to both companies and contacts using different table occurrences. You could use a company ID field to link an address to a company to link more than one address to a company and can use an AddressID to link that address to multiple contacts.
This allows you to make corrections and updates to a single address record and have it show for both the company and for contacts without needing to make the same update more than once.