Just a thought on the virtual desktops:
Noting some bad behavior from a cheap PDF program that doesn't know how to play nice when the second and third monitors are removed, it may be somewhat easier than you think to implement virtual(or similar) desktops.
While digging through the Discussions, I ran across the Function Roll ups, didn't know they were there that's pretty cool. Anyway, this misbehaving program will keep opening (OFF SCREEN) if that's the last place it was opened when the other monitors were attached and it is really running. I also know that when writing a program, you can specify x,y coordinates for a window to open and with a fat finger that location can be off screen.
Here is an idea, you may be able to use something from the Roll-up function kinda.
You can get active window and icon locations, store them in a file, (per virtual desktop) then use whatever you are doing in Roll-up to pull the icons from the task-bar and store that information into the virtual desktop file and then possibly just change the windows and icons x,y locations off screen. When switching between desktops you would just read the corresponding window and icon locations and restore the x,y locations and task-bar buttons. You may not need to be particular with each off screen location because you wont be able to see them all stacked up anyway. The applications would need to be shutdown when POWERING OFF the system and the application windows deleted from the desktop file because they are no longer running. Sleep and Hibernation may work just fine this way as well maybe even just logging out too because the apps can still be running. On Display Fusion start up from POWER ON, check the virtual desktop data file to see if there are any programs listed in them, from POWER ON there should not be any programs in there, clean out the virtual desktop file leaving only icon and task-bar data in it.
While I'm here and have mentioned the Roll-up functions, I have a request. Could you have a user selectable area on the desktop to corral Rolled up (icons) in and not stack them up and when opening back up from a Rolled up (icon), put the window back where it was. This would be very cool.