Passengers would stop complaining or even start volunteering if Air Canada was offering them a monetary compensation for postponing their trip to the next flight. This is what happens in Europe and getting 300€ to wait 4 hours in an airport is not too bad if you're not in a hurry.