I was using zswap to cut the memory load of each VM, which made it sort of tolerable. When a VM gets to using too much RAM, streaks and visual artifacts start to show up in windows and desktop decorations, eventually filling them with random noise, and then there is nothing to do but shut the VM, and often the whole machine, down.
I resent systemd burning hundreds of MB in each VM for, mostly, nothing of any value. You can "systemctl disable" things like wpa_supplicant, but it doesn't help much.
I have finally got another laptop with 32GB, expandable to 64GB. But suspend/resume doesn't work on it -- screen just goes black, until power-off -- nor an external HDMI monitor. I have to hope future kernel releases will fix these.