hostid utility in busybox in initramfs and hostid from coreutils gets id by calling function gethostid() from glibc. But this function is generating hostid based on gethostname->gethostbyname_r->IP-address. And during initramfs it returns 0. So using autogenerated hostid value can cause problems in some cases. Because when spl module is loading it finds hostid and remember it. This problem can be solved by making custom hostid and saving it into /etc/hostid, then hostid utilities and spl module will get it from this file. So it needs to be copied into initramfs image be genkernel too.
I modified sys-kernel/spl to adopt FreeBSD's behavior where it will treat the hostid as zero if /etc/hostid does not exist. It will also no longer invoke the system's hostid, which should solve the problem that you encountered.
Can you also add /etc/hostid into the list of files to be included into initramfs if it exists?