lib/libprocstat/zfs.c uses old ZFS znode_t layout that is not compatible with what is currently in kernel when it extracts vn_mode and vn_size. In particular, the code assumes that znode_t contains a pointer to a znode_phys_t object, which is not the case.
I think that the required information can be extracted from z_size and z_mode fields in znode_t.
While here, there is a comment in zfs_filestat() that talks about two byte offsets, while in reality the offsets are 2 * sizeof(pointer), e.g. 16 bytes on 64-bit systems. The code itself is correct.