Du brauchst ab 9.2 kein Cachefile mehr für den Root-Pool. Die Logik ist grob so:
1. Er bootet vom ersten zpool, den er findet. Bei MBR-Partitionen kann man das umgehen, indem man einen Slice als "aktiv" markiert. Bei GPT kann man auf einer Partition das "bootme" Flag setzen, damit sie gewählt wird. Die meisten BIOSe verlangen, dass die Partition komplett vor 2TiB liegt, also die 2TiB Grenze auf der Festplatte nicht überschreitet.
2. Der Kernel bootet dann. Was er bei dir ja tut. Das Root-Device wird anhand von dem Tuneable "vfs.root.mountfrom" bestimmt. Existiert das Tuneable nicht, wird das Dataset des "bootfs" Property im zpool gewählt. Ist das nicht gesetzt, versucht er eine /etc/fstab zu finden. Das klappt aber nur, wenn /boot und /etc im gleichen Dataset liegen. Findet er keine /etc/fstab, bricht er ab.
Für die Praxis reicht es im Normalfall also aus, den zpool auf die erste ein ZFS beinhaltende Partition zu legen und "zpool set bootfs=pool/dataset" zu setzen.