I'm having a problem with account addresses that seems to to me to be so obvious but I'm missing something.

In CRM there is an Account with a main address. It also has a list of "other" addresses. It also can have one or more Contacts associated which each also have a main address and a list of "other" addresses. 

The problem is that often the same address is in more than one of these places and keeping all the addresses in sync when an account changes address is a real issue. For us it is a real time consuming, manual process finding and updating all occurrences of the address when an account moves.

My question is how is everyone else dealing with the problem of address changes? I thought of writing a plug in that could go through and find instances of an address and update them, but is this really the only way to solve the problem? It seems odd that managing many addresses like this in a CRM system would be so hard, but like a say perhaps i've missed something.