Let's assume Kucherov pays 5% in agent fees ($475K), $75K/year for living expenses (mortgage, cars, etc) and say another 100K a year for his off-season training,etc. In Toronto that would leave him with around $3.8 million after all expenses. In Florida it would leave him with $5.15 million.
Bit of a difference right? Of course there are very few players that make Kucherov money with the average salary being around $2 million per year. Couple that much lower salary with an average career length of 4 years and players aren't these multi-millionaires that people think they are when all is said and done.
Sure, your team may have trouble signing players for other reasons (team performance, cold climate, a 5000-seat home arena, etc) but most of the time, players will go where the money is because it's their one chance at financial security if they aren't a superstar. It gives them a chance to protect themselves in case they suffer a career-ending injury or if they're reckless spenders like Evander Kane, a chance to continue to live an unnecessarily lavish lifestyle.
Not to say that Zach Hyman lives a lavish lifestyle by any means, but he could've stayed in Toronto if he took a pay cut from what the Oilers offered if it was about competing. It's not as if Edmonton is in a better position than Toronto. Given his injury history and his age though, this was his "one big contract" that he was going to get and leaving 7-8 million on the board to stay in Toronto is a whole lot of money when the most you've "made" is $2.2 million in a season.
You may call players greedy or say they aren't worth what they signed for, but that's why they pay so much to their agents. To get them that big deal that sets them and their families up for life in case something happens.
Former NHLer Chris Pronger has put together a very thorough thread on the post-career financial issues that a large percentage of professional athletes are faced with. If you're interested in the financial aspect of professional sports, it's definitely a good read. Check it out: