I can tell you what I plan on doing, but haven't drawn any schematic, or written any code yet. And things may change when I actually start doing it.
First, my plan is to switch spindles based on the tool numbers. Something like, tools #100 and lower will use one spindle, and tools #101 and higher will use the other spindle. This should make any g-code usable, with nothing special in the g-code to switch spindles.
For my two spindles, I plan on using a single VFD to drive both, using relays and contactors to switch the motor power wires. With 2 VFD's, you might need more relays.
For the macros, there are two ways to go about it. Either use a macro pump, or do everything in the M6 macros.
A couple things need to happen.
You need to do a SwapAxis(), or reset it if they're already swapped.
You need to electronically swap the axis (VFD's). My thought is to use an Output, and have it active for one spindle and inactive for the other.
You need to do an offset for the second spindle location. I plan on using G52.
If you search the Yahoo group for Bennyattwell's posts, he has some info on how he uses a machine with I think around 30 independent spindles.
Another option is to wait for Mach4, which is supposed to support multiple spindles.