How I plan to make it work is that I combine the static factor that is happiness with factors such as team success and play time (maybe usage rate) and keep it all on a 0-100 scale. Then depending how happy they are there is xx% chance that a player is unhappy enough to want to leave. If a player is unhappy enough to want to leave then the offer from their current team will be reduced by a factor so that a non-bird max ends up beating the bird max.
So a player unhappy enough would close the gap between the bird and non-bird max. But it's not a guarantee that player leaves the team, it would only be for that kind of difference in the deal.
As we've seen in the NBA, players who don't like their teams simply will leave in free agency to the best option out there that can offer them the money. This is what this factor would do.