If you are having trouble finding staff than you are by definition not paying market rates. If $20/hr gets you crap, then you need to raise your rates. This is capitalism, people don't owe you their labour for what you consider good money.
You can always hire people for anywhere, it all depends on your requirements and your compensation. If you can't find them, then you need to change either requirements or compensation.
Have you considered trying to hire from abroad? You may need a high salary by USA standards to hire USA workers to work in São Paulo, but tis doable. You have now found the market rate for programmers in São Paulo