Odesk, but with a few must-do approaches:
Hourly only, with work tracking.
Limit the hours authorized to just long enough to figure out if they're worth their rate (2-3 is what I use), then up them only when you like a candidate
If a task is important, hire the best 3 candidates to do the first two hours' worth. Usually 1 will totally flake somehow, 1 will almost do ok, 1 will be good.
Weigh heavily on iterative solving (inspect their work daily (archived attachments are a must), interact, and don't give them too long of a to-do list)
Avoid skype and off-oDesk emails; it's always good to keep things in writing to maintain perspective
Recognize that they have other projects going on and that you can't occupy the lowest-bidder and highest-priority spaces at the same time (though one or the other isn't too much to expect)
*Don't be afraid to walk away and stop throwing good money after bad if performance suffers (usually that means they get unresponsive or slow to return work)