Find a few empty supertankers (which I'm certain BP can round up if they need to), mount a bunch of large industrial pumps on top of each one, plant them strategically around the leak site, and start sucking up the oil-water mixture from the surface (and stop with the dispersant - we want the oil to stay together in this scenario). Once they're full in a week or so, bring another three or four supertankers in to take over. Meanwhile, send the full ones to a nearby port, offload the oil-water mixture, and deal with processing it to separate out the oil and the water there. We won't get all the oil; if we're lucky, maybe 75%. But whatever that percentage is, it's miles better than what we're getting now.
This is apparently what was done in the early nineties off the coast of Saudi Arabia when they had a similar problem. I'm not saying this would be cheap - supertankers and pumps don't grow on trees - but BP needs to fix this and show they're making a good efforts. Plus, you could probably recover a good deal of the oil as a part of the onshore processing and sell it like any other oil.