I found the exact same thing with libvirt. Linux images seemed to work fine but the corruption errors were happening on my Windows VMs. Was not a disk failure as I tried on 2 NVMes and a SATA SSD.
The solution to this is you need to
chattr +C /path/to/qemu/images
on the directory holding the Qemu images and re-create the RAW image in there (so it has nodatacow flag set now).
Found this solution https://www.spinics.net/lists/linux-btrfs/msg25949.html