There is another factor at play. It is easy for people to apply for jobs anywhere in the world. Your "plan from frustration" is based on this. For specialized roles or unique skills or high level positions, the trouble of wading through foreign candidates is worth it. For a production Rails/Java/C#/Javascript position, it probably is not because someone wanting to relocate for that type of position is primarily applying because they "think they might possibly" want to relocate.
If you really want to live/work in Canada or Europe, pick one and take the steps to live there on your own and worry about the job further down the line. Having a visa already probably gives you a leg up.
To be honest, accepting any job is a thought that comes to my mind out of frustration, not plan A.
I'm coming to the conclusion that overseas candidates must have way more skills than local ones to offset the risks you mentioned.
I want to be part of the candidate pool that gets taken seriously but it seems I'll need to be physically close for that.