As for a), yes, Canada's multiculturalism attracts migrants, who in spite of their talent have a crappy negotiating position and are easily taken advantage of. Everyone has a story of the guy who barely speaks english but who can code getting worked like a dog for peanuts.
for b) for software in Canada, you sell to the 5 banks or government. it's recurring license fees from stable customers but in a limited market.
And c) there is no market for software in canada that would justify a billion dollar valuation. Those valuations were based on cornering a user base to use as a sales channel.
Further Canada's de-facto official policy of currency debasement to keep industrial exports afloat means limited purchasing power for citizens, therefore anything that succeeds has to succeed somewhere else.
It's a great place to outsource your dev shop, kind of like a more reliable India or Belarus, but as a market it's just not large enough for to reap the network effect / micro-margin/infinite scale benefits of software solutions.