rango - 1:11 am on Jul 10, 2012 (gmt 0)
The 301 is just for this known situation. The canonical should help protect against future problems.
For the user who lands on one of those bad pages, the 301 is definitely nicer. They aren't going to be looking at your canonicals ;) And hey, the more good signals to Google the better.
That other thread also mentioned canonical tags not helping with this specific problem mind you.