Reading the original post, the first question that came to mind was: why is the hardware configuration not being controlled!?
In another life managing labs, configuration control of the hardware was step #1 towards sane management of any group of computer systems. In the current life of managing thousands of servers, this remains the case, regardless of the OS.
The ONLY reason why folks have a hodge podge of hardware is because someone is trying to be cheap and "save money", nevermind the countless hours spent addressing issues that arose due to bad decisions and/or lack of planning at the start.
Suggestion #1: Review your current hardware/driver issues. Remove or replace components that are having hardware issues. Your lab shouldn't be changing hardware left and right on you. If it is, that's another problem. Once you've moved all of the systems to a nice overlap of compatibility, restrict all further future purchases to hardware that is well supported by all OS(s) in your employ.
The second issue that I'm seeing, which needs more information: what is your intended support list of applications?
Most workstation labs have a list of supported apps. Anything not on that list is "you're on your own". You can't please everyone. That was the case when we didn't have literally hundreds of thousands of potential component matchups. It most certainly isn't the case now. Obviously, if you can reduce your list of operating systems down to just one, you will be in a happier place.
Now, regarding the issue of destkop virtualization, as you've described: you are SOL. ALL desktop virtualization effectively requires the host OS to be running a GUI and the guest OS to be routing their "display" through the virtualization technology through to the host OS's GUI.
If you have to go with virtualization: VirtualBox. You can use either Windows or Linux as the Host OS. Supports both as the Guest OS. It is free. Runs fairly well. Allows reasonably good USB passthrough.
If you don't mind rebooting to change OS(s), another option you can have is to image all the workstations as dual-boot workstations. People can just reboot into the OS of their choice. You get max performance. Regarding drivers, I'm not sure I see the problem. Keep a master image updated on your central server, with all drivers. Each night, auto-reimage your boxes, so they start the day out fresh. I mean... this is a computer lab. Re-imaging each box EVERY night is just good common sense.
Final solution I would offer: Net boot your workstations from a central server. This has the advantage of having each user's intiial experience be on a clean/safe system of their OS choice. Since the image being run is from a centralized server, you only need to keep drivers up to date on one host(master).
Anyways, there are many ways to solve the problems you've listed. The best is to attack the root of your problems; standardize the hardware configuration and prevent future configuration drift.