I get the feeling that a gcode post-processor is in your future. Filament drool is always going to be an issue with a dual hot-end setup, which means cool-downs, heat-ups, primes and maybe even nozzle wipes. All of which introduce slow-downs. The X1 Carbon (coming soon) actually swaps filaments on the fly, with purging and wiping steps between. It's a very fast Core X-Y printer, so the swaps tend to be absorbed somewhat into the overall print time, but at the cost of wasted material. I'd suspect that leaving the hot-ends up to temp, with a short purge/prime and wiping blade might be the best bet for swaps. If the gcode interpreter sees the extruder assembly motion as X1 and X2, one would think that substituting something like G0 F<feedrate> X1<park position> X2<print position> would get them moving in tandem. The PP would need to be able to identify a swap, and set the positions accordingly, depending on which head was doing the printing.
The bright side of this is that the world would be your oyster once you had a framework for doing this, as any custom actions (wiping, priming, etc.) could be wedged into the same space.
As for your other issue, be careful of stepper motor resonance. Not saying that this is your issue, but if you are operating in the resonance band for the motors, it could cause problems. Decreasing or even increasing the speeds could help in this case. Honestly though, it sort of sounds like an acceleration/jerk problem. Unfortunately, if that's what's going on, the only way other than reducing the overall speed of the movements is to reduce the weight and/or stiffen some of your components. While I like the idea of these massive, heavy duty machines, I think they start to get so large and heavy that some of the pitfalls of CNC routers start to appear on them.