You asked how to do it with dd, but I had better success piping the output of dump into restore. Given the source ad1s1a and the target ad2s1a:
$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a | restore -rf -
I tried this on FreeBSD, actually I found it on the FreeBSD Forum