The main culprit seems to be putting 'hw.acpi.reset_video=1' in /boot/loader.conf this causes resume to hang half way through. I managed to trigger CMOS corruption once, but I can't systematically trigger it. Without hw.acpi.reset_video=1 in /boot/loader.conf, resume works except that the screen stays black.