The device-mapper initscript uses awk (and uniq), which are in /usr/bin, and fails to find them if /usr is not mounted before boot.
Do you not have an initrd which mounts /usr?
Genkernel can mount /usr when it's in /etc/initramfs.mounts, but then /usr has to also be specified in /etc/fstab. I avoid doing that because / and /usr are on ZFS, and /usr is a nested filesystem inside /, so writing it explicitly in /etc/fstab will make it more work to change the root filesystem (it will need to be changed not only in ZFS, but also in fstab) (currently I can switch to a different root filesystem just by changing the default boot filesystem in ZFS, and all the nested filesystems get mounted automatically by the zfs-mount initscript).
hts/funtoo on / type zfs (rw,relatime,xattr,posixacl)
hts/funtoo/usr on /usr type zfs (rw,noatime)
Yeah I don't think that's a supported configuration. ryao as the ZFS guy I'll leave it up to you to comment.