Since package moves might interfere with PORTAGE_BINHOST clients when they are applied in-place, it would be better if the package moves would be applied to a copy when FEATURES=binpkg-multi-instance is enabled.
The fakedbapi _instance_key_multi_instance method already includes mtime in the key, so the mtime can serve to distinguish new instances that have had package moves applied. The dbapi _cmp_cpv will have to include mtime in its comparison.
Also eclean-pkg will need to account for mtime in this code from bug 586658: https://gitweb.gentoo.org/proj/gentoolkit.git/commit/?id=1952ecb9f2912968dd2f4487089fa50ed3d3bad1
I think it's probably better to create a new binary package format that patches an existing binary package, so that if the user has the base package installed, then it patches the base package into a new package. This can be used not only to propagate package moves, but also to propagate other dependency changes like those introduced by eclass changes.
For bug 766012 I added copy on write to binarytree.move_ent since that seemed like this most practical and obvious solution: https://gitweb.gentoo.org/proj/portage.git/commit/?id=79106b8bbce8b7b27db14877ca63c75a1a4a32d3 Both move_slot_ent and update_ents still operate in-place.