I guess the issue is the usb sleep mode which takes some time to wake up and handshake with the drive.
Can you turn off or change USB sleep mode settings in the BIOS? Can you set them to “always on”?
Can you test with rootdelay=60 just be sure? I assume this parameter is only for the root directory, but your problem has nothing to do with root directory. It happens much earlier.
Your internal nvme has more than 70 % free. Why not using a swapfile on the nvme? At least for testing purposes you could try that.
I enabled Always On USB (charge external devices during low power state) and also Charge in Battery Mode (Enable/Disable charging external devices when system is in hibernate or power-off state and in battery mode). None of them did help. I also set the rootdelay to 60, but when booting I don’t notice any delay (is it right that rootdelay holds the root mount for defined amount of seconds no matter what? It doesn’t look like pausing for 10 seconds even).
Meanwhile I also tried to boot and hibernate repeatedly from fallback initramfs grub profiles, but I can only achieve randomly successful resume here and there.
My last suggestions would be to create a swapfile on the internal nvme and test hibernation on that swapfile. If that works you clearly have a hardware / USB issue.
I don’t know if it relates to this problem, but I have nvidia.NVreg_PreserveVideoMemoryAllocations set to 1 in /etc/default/modprobe.d/nvidia.conf. For completeness, it looks like this: