About Emumiga. From now on, read "x86" as "host". (Emumiga would work on ARM too for instance.)
Emumiga runs EVERYTHING except the program itself in an x86 context. Every loaded library is an x86 library. It works by a pretty deep and convoluted set of "layers" of memory mappings, which it uses to keep track of pointers within structs within pointers.
Moggen is one of the very few coders I know which could implement something like this. This is actually research level stuff and he could write a paper about it.