My setup is now working, and I have a few observations.
Firstly, do not, under any circumstances, enable de-dupe in ZFS. It absolutely kills performance. I found it quicker to copy off the data I needed, delete the pool and re-creating, than just deleting the directory tree.
Now, there probably are circumstances where you might want to enable it, on a properly specced system, but please adopt a "do not enable" default position :) believe me, it is a good move.
Secondly, watch out for dodgy hardware. When you get an error you can't explain, seems random and no one else has experienced, then check your hardware. I was getting weird AFP commands the server didn't understand and weird memcpy errors, and eventually, after complete silence from the mailing list, decided to try another piece of hardware, and voila, it worked perfectly and has continued to work perfectly so far.
Now ZFS is wonderful, and the main reason for me using Open Indiana on my TM backup box. I just know that the data on the disk is correct, hasn't succumbed to bit rot and will be recoverable should the rot set in. I was also able to move the disk sets from one machine to another with great ease - just a zpool export, unplug the disk, then zpool import to start the pool up on the target machine. Annoyingly, hotplug doesn't seem to work on the hardware we have, so I had to restart the machine to be able to see the disks, however given its nature as a backup machine this shouldn't be too much of an issue in the future.
And I also used zfs send/recv to move a file system off one pool onto another, which worked very well.
I had the server backup, which isn't Time Machine, but BackupPC running on the old OpenIndiana server, the one with the dodgy hardware, so wanted to move that off. Initially tried using zfs send thus:
zfs send srcfs@snap1 |sshid
@host
pfexec zfs recv -F dstfs
(courtesy of the surprisingly good Oracle docs)
however this was taking too long, so I stopped the backup running, zfs exported the pool and imported it into the new machine, and ran it disk to disk, and it worked much quicker (as you'd expect!)
So now I have everything running quietly in the background, monitoring and working lovely. I need to do a few tests to ensure that things are properly recoverable (since the only actual backup is one which actually restores properly) but I'm reasonably sure this will be fine.
Tick!