You ultimately fix the uid/gids to consolidate them.
Or you consolidate them somehow. You could use a meta directory of some kind that stores the uid per system on each user object. (Same for gid).
Thus you could have all the values on an object, but you would need a way to distinguish them for LDAP binds against the meta directory. Perhaps by a different uid attribute per system, (which would get unwieldy) and then configure each system to use its own uid attribute, instead of default uid.
Based on the comment, and thinking about it further, I would think that this is maybe something you could do without an IDM style system, but rather just stand up an LDAP server of choice. Then export your data from all your sources, and consolidate it. I.e. For every geoffc user, find all the uid's in the data sources. Then add a SystemAuid=123, SystemBuid=999, SystemCuid=767543 and so on in an LDIF file.
Then configure SystemA to use SystemAuid= instead of uid= in its pam/ldap config. And so on.
Same basic idea for groups. An IDM style system would be setup to do the data work on its own as part of the basic processes and maintain it as changes happen in each system over time.
You would need to add a process in place to add new users to your LDAP. In which case, you would chose the next available free uid, and assign it to all the values for this user, so going forward you move away from multiple values.