Setting up a VM for every client is going to be a gigantic drain of resources on your machine.
Sometimes, though, you may be connected to many VPNs simultaneously without any special effort. Let me explain.
VPNs perform two tasks:
route all your traffic through a remote server;
give you access to a remote LAN.
In doing task1, they change your default gateway, which (for Windows and Unix machines, but not for Linux) absolutely must be unique. Hence a conflict arises.
Thus the first requirement to have several VPNs running simultaneously is to keep your default gateway, the one you have before logging into any VPN; or in other words, not to allow any tunnel.
There may be a conflict with task 2 as well. VPNs give you access to remote LANs. For a simultaneous connection to work, it is necessary that all LANs correspond to distinct, non-overlapping subnets.
You can help in this by giving your home network an unusual range, something like 192.168.157.0/24. But you cannot be sure that the remote LANs will cooperate. If they do, you are in business, because you will have a route to, say 192.168.11.0/24, another route to 192.168.33.0/24, one to 10.0.1.0/24, and so on.
Please keep in mind that the above applies both to the LANs, and to the IP addresses dished out to the tunnel, which are typically in the range 10.0.0x/24, and so on.
In other words, all private addresses ranges must be non-overlapping. If this occurs, and you have kept your own gateway, then you definitely can connect to many VPNs simultaneously, without the use of any VM.