Decided to switch back to QXL+Spice, but with Spice Listen Type = None, and with CPU pinning, and directly sending audio to pipewire. Seems to have fixed the slow 2d graphics, while maintaining smooth video playback, and eliminated any random intermittent freezes that would crash the viewer.