Interesting thought, but highly dependant on the actual program. Let's assume it doesn't touch any files on disk (no opening sockets either). You would need to at least
1. Halt the process (SIGSTOP comes to mind)
2. Create a copy of the running program and /proc/$pid - which will also include memory and mmap details
3. Transfer everything to the other machine
4. Load memory, somehow spawn a spawn a new process with the info from /proc/$pid we saved, mmap the loaded memory into it
5. Continue the process on the new machine (SIGCONT)
Let me admit that I do not have the slightest clue how to achieve step 4. I wonder if a systemd namespace could make things easier.