Why is `zfs list -t snapshot` orders of magnitude slower than `ls .zfs/snapshot`?
zfs list -t snapshot always takes many orders of magnitude more time to run than
You're also comparing two completely different operations.
zfs list -t snapshot enumerates all the ZFS snapshots on the system - and provides a lot of information about those snapshots, such as the amount of space used. Run that under
strace to see the system calls made.
ls .zfs/snapshot is just emitting a simple name list from a directory. There's nothing to do other than read the names - and provide nothing else.