I think a solution to this is to create a window during which NIL deals can be made / signed, and to make that window happen before the transfer portal opens.
While I’m sure there will still be some under the table deals happening, I would bet a lot of teams would be hesitant to throw money at a player if they aren’t sure that player will come (and / or is a player that technically they aren’t supposed to be recruiting).