Next on "Guesses from a Novice"...
I understand this to mean: the internal entities already have a globally unique identity. Which is to say, they are uniquely addressable via the tuple (aggregateId, localEntityId).
In some circumstances, you are done: the unique identifier for the entity as new aggregate is the same as when it was enclosed; you are just looking it up a different way.
If you are using something like a uuid for all of your identities, that doesn't work. However, there are deterministic recipes for creating a named uuid from sources. Since the tuple is unique, createNamedUuidFrom(tuple) is also going to be unique [1].
[1] Not an absolute, but to many nines.
After that, I'm not sure what the right play is for cleaning up the history. I'm almost certain you want to append new events to the existing history to make that happen, but I don't yet see the right strategy for doing that.