I would argue the hyphen is not necessary in major league contract. This is an exception to the standard rule on compound modifiers because "major" and "league" are so closely connected in use, especially within the context in question (sports reporting, and specifically, baseball), they do not need the hyphen. No one is going to read the sentence and think the person signed a "league contract," and a major one at that.
It's pretty much the same with high school coach. It's not that he's a school coach, and a high one to boot. He's a high school coach.