Ben,
To make it a bit cleaner, you most likely want to send your aggregate (/21) to all service providers, and then if you choose to deaggregate and create more specific advertisements for traffic engineering purposes, you just advertise the relevant longer prefixes (/22's for example) on the specific uplink you want the traffic to return on.
So for example, let's say you have a /21, and you want to split the traffic across 2x /22's, you advertise the /21 on both ISP links, and a single (different) /22 on each ISP link.
This way the more specific route (/22) will pull the traffic towards the ISP that is advertising it, but in case of a failure on one of those links, you still have the /21 aggregate that will pull all the traffic to the other link.
This should generally work, but may have strange edge cases, especially when ISPs do their own (not necessarily standard) traffic engineering.
For example ISP A, getting a /21 could set the local preference for that /21 higher than other peers (where they would be learning your other /22), so traffic originating from this local ISP would take the local path regardless of your policy. This is when you will have to start looking at their BGP communities...
Tnx
Arie