Until this limitation is overcome, you might be helped by a script that I wrote:
zfs rollup
I think you could achieve what you want by setting your snapshot schedule to at least every day (if not more often) and then run the following pruning command at least once a day:
Code:
rollup.py --recursive --intervals 'daily:90,monthly:24,yearly:0' poolname
That will keep 90 daily snapshots (approximately 3 months worth), 24 monthly (two years worth), and unlimited yearly.
You can add --test to see what is going to happen without making any changes. Add --verbose to always see which snapshots are or would be removed.