When the VMs-on-NOCOW topic arises I always inquire if they've actually used the VM for real work and found the performance lacking. In most cases the VM is perfectly usable even if the benchmarks aren't great. In my case I had "daily driver" Windows VMs used for productivity apps. The underlying virtual disk file (on BTRFS) had 250-400k fragments. It benchmarked poorly but ran fine, with the guest OS disk cache and the Linux host's page cache both standing between my user experience and host filesystem machinations. It sounds like you have a write-intensive corner case though. I have no suggestions beyond try a different filesystem.
NOCOW has been a libvirt default since 6.6.0 whenever btrfs datastores are used, per libvirt docs. I've just stumbled across this thread while researching a thread over on the btrfs-progs git. btrfs with NOCOW is a data-eater, good for tmp or swap or scratch space and that's about it. I'm flabbergasted.