I think there should be some tweaks to determining whether a player will exercise his no-trade clause. The current system seems incredibly simplistic; if you finished with the best record the previous year, any no-trade players are effectively untradeable. If you finished with 95 wins, the player will happily go to a team that finished with 96 wins but not a team that "only" finished with 94.
There should probably be more flexibility here. Maybe make it a possibility that a no-trade player will agree to a trade as long as that team made the playoffs, or finished with at least 85 wins, or maybe even give a boost to teams located near the player's hometown. Maybe you could even get a short list from the player outlining which teams he would agree to be traded to, similar to real life. It would also make it a lot more realistic if a player is more likely to waive his no-trade clause if he's in the final year of his contract, since in real life players often do this with the assumption that the new team might sign him to an extension.
I know it might not be the most important detail in the world but it would make a big difference, since the situations where this does come into play are often big ones, especially since the 10-5 no-trade rule exists in the game.