If a player takes NIL, maybe there will be a multi-year contract process involved. Or maybe a player who receives X amount of NIL cannot then enter the portal and seek out more NIL without penalty. In every pro sport, players are not just yearly free agents. If you are under contract, you can decide not to play ("retire"), but you have to sit out. This happened to Jayson Williams if I remember. He had to sit out a year of the NBA.
I think it would be perfectly fair to have tiers of NIL compensation. If a player leaves for a better tier of NIL, there could be a sit out period of 5, 10, 15 games, etc. Or there could be pay back of NIL required. Big donors would then be less inclined to just throw money around if they were having to also pay a "buy-out" for a player that will miss the first ten games of the season.