As Peter R suggests, you can write a script. However, if you want to send the subvolume it must be marked as readonly, and you can't snapshot recursively into readonly volumes.
To solve that you can use btrfs-property (found through this answear) in the script that handles recursion, making it (after all snapshots are taken) mark the snapshots readonly, so you can send them.
Alternatively, you can do
cp -a --reflink=always /path/to/root_subvol/ /path/to/child_subvol/
(--reflink=auto
never worked for me before, and could also help you catch errors)
It should be fast, and afaik with the same advantages as a snapshot, although you don't keep the old subvolume structure.