I would get rid of the franchise tag and replace it with some version of the Supermax contract like they have in the NBA. The team that drafted you could extend you x % above what another team could but maybe modify it so you could exceed the cap by doing so (one player only).
It would then allow a generational talent to stay put and not just automatically bail for greener pastures.