I had problems with my system boot looping as well when trying to mount ZFS. I never managed to fix it and had to wipe my drives. But you are in a better situation than me, as I couldn't even mount them as readonly!
You can have a look at my misery here:
You might be able to fix your issue by mounting the file system in recovery mode. This means it will delete the last few transactions to the pool, and attempt to mount. If it froze while doing some transactions to your pool, this might fix it. But keep in mind the last transactions it deletes will be forever gone (probably not that scary compared to losing all data).
The zpool command I tried: "zpool import <poolname> -N -F"
"-N" = "Import the pool without mounting any file systems." You might not need this as you have already shown you can import the file system in readonly.
"-F" = "Recovery mode for a non-importable pool. Attempt to return the pool to an importable state by discarding the last few transactions. Not all damaged pools can be recovered by using this option. If successful, the data from the discarded transactions is irretrievably lost. This option is ignored if the pool is importable or already imported."
https://openzfs.github.io/openzfs-docs/man/master/8/zpool-import.8.html
DISCLAIMER: I am a ZFS noob so the above might be bad advice. But it was what I could find when I was in a similar situation as you.