Having troubles restoring zfs snapshot backups

Hey everyone! I am pretty new to learning some of the cool things zfs can do, and I find after much research I am still having serious troubles with my backup method I am attempting to do. Right now I have a zfs pool with multiple subvolumes, and my idea is to take a snapshot of that pool with all its subvolumes, send/receive the snapshot to an external HDD with another zpool on it (backups), do regular incremental backups with snapshots, and then have the ability to restore a backup out of this at a later date if necessary. My zpool structure looks like this:

| -- dir1
| -- dir2
| -- dir3
| | -- dir3A
| -- dir4
| | -- dir4A
| | -- dir4B

Currently, I do my snapshots like so:
sudo zfs snapshot -r tank@`date +"%Y-%m-%d"`

Then my full first backup:
sudo zfs send -R tank@2017-06-21 | sudo zfs receive -vu backups

Then for each incremental backup:
sudo zfs send -Ri tank@2017-06-21 tank@2017-07-01 | sudo zfs receive -vu -F backups

Doing a zfs list -t snapshot on my external HDD (backups zpool) shows the proper structure as on the host, and it shows the exact amount of data used. So my problem now is, if I want to restore that to my host if say, my HDD fails and I need to replace it, how would I do that? So for example, what if I decided I want to restore my backup from 2017-06-21?

I tried:
sudo zfs send -R backups@2017-06-21 | sudo zfs receive tank and it doesn't restore everything, so I then individually restored dir1, dir2, dir3, dir3a, etc. from that date and the restore took time like it actually transferred the data, but looking back respectively at tank nothing was there