Clients who use those websites to hire people do so because they don't know where they should go to hire people. The people who don't how who to hire are usually people who have never hired the right person or can't afford a lot.
I have an account on Upwork and I only use it for people to invite me to jobs. I've closed $4,000/month deals on there but 90% of people posting are looking to pay under $300/month.
Largely, the people who work on Upwork (in the SEO realm) are scams. They don't know anything about SEO and build social bookmarks all day but they get hired because they charge $3/hour or $50/month.
If your mechanic told you he'd replace your transmission for $30 you'd know to run like hell (assuming you know it's $x,xxx to do such a thing) because you know there's something fishy going on. But if an SEO tells an ignorant (not arrogant, at least not always) business owner SEO will only cost $50/month and they'll rank #1 within a month and someone else comes along saying it'll cost $1,500/month and take 3-6 months - who looks like the scam to them?
TLDR; Weed out the shit. Apply to as many jobs as you can that look like the job was posted by someone competent.
PS:
When I used to actively apply to jobs on Upwork I'd apply twice a month to about 15-20 jobs each time. on average Of those 20 (to keep math simple) about 10 (50%) would interview me and of those 10 interviews, 1 (10% of 50%) would hire me. The other 9 either decided they didn't want to pay for real SEO or I decided not to move forward with them for reasons other than payment. Point being, you're looking for a needle in a haystack but if you torch the haystack (apply in bulk) things will move faster. Don't expect to convert every time, sometimes you can go months without landing a single client. The goal is to land the good ones which will carry you at least until you find another client.