NFL has gone on strike too, but never had a season cancelled.
Free agency hurt too. When you have players like Mays, Aaron, and Musial play their entire career for one team (okay, Mays and Aaron ended their careers in the cities where they got their MLB start) it builds attachment in the average fan. Now having stated that, free agency is good in principle, not necessarily for the $$$.
In any other profession, could you imagine being bonded for life by a contract? What if you taught school in Richland County, had issues with your school principal, but could not go to work in another school district (or another school in your district!) without the principal "selling" your contract or "trading" you to another school? This, of course, was before the massive rise in salaries.