I have a bit of a different approach in an application that I recently built for a swimming pool company. Basically a pool can only have 1 Current Account Holder at any specific point in time, but you also want to be able to see a list of all the account holders that was ever linked to this pool in some way.
So what I've done is to create 2 Relationships from Pool to Account Holder. The one is a peer relationship with multiple allowed OFF, called Current account holder.
The Other is a general Multi Relationship Called Account Holders.
So when I Add a new account holder I ask the user if this is the current account holder. IF YES then I Do:
INSERT AccountHolder IN Pool.CurrentAccountHolder
INSERT AccountHolder IN Pool.AccountHolders.
This way you have easy reference to the Current Account Holder, and you can have Shortcut Attributes on Pool (In Your Case Client) to CurrentAccountHolder.Name, CurrentAccountHolder.Email etc. as there can only be one.
So if you want to change the CurrentAccountHolder You just do a Pick or Create and INSERT into that Relationship.
So something like this combined with a History Object With Consultant Change Dates Should cover the spectrum of what you need to keep track of.
Just my 2 peas. 🙂 Hope you all have a blessed Easter Weekend!