For all of those who don't get it...
Live relocation; copy/update kernel; trampolines... doesn't it make you want to shake your head?
It will actually be easier and more efficient (not to mention less bugs) to halt input, complete processing (yeah, this could take a bit of time; so think about) clear cached inputs, archive data and reboot.
Now, if you think this is ridiculous then think about what you're saying to... routine out some 'random' locations/toss these into memory, pause input, halt processing, halt services, change memory locations, update pointers then start everything back up; oh every 15 minutes or 4 times a day (makes no difference). BTW, think about how this 'randomizing, updating, restarting' routine has to work while everything else is in limbo.
If you think rebooting is inefficient and will take time, think about a system which is likely running more than one application along with an underlying OS to go along with your silly scheme.