The answer to account migration is simple "Separate the identity of a user from its instance". Done. How to get there in a method that drags along 5 million or something Fediverse users, is the hard problem.
I'm building away at bovine, which does something much simpler. It implements what the specification calls Client To Server. This might eventually allow one to separate the ActivityPub layer (= Transport) from user facing features (like aggregation into a timeline and its ordering).
If this was properly implemented already the wish "Pixelfed + Mastodon" in one Fediverse Account could become true.