My radical idea is to not let teams control their own pick.
As a C's fan, that '16-'20 window was one of my favorite times as a fan. I got to root for the team to win now while also being excited about the draft. I'm sure fans in OKC, HOU, ATL are feeling this now too, controlling some primo picks from other teams while getting to root for their teams to win now.
And then I look at the Brooklyn Nets during that same time frame, they were able to improve the team (even before big free agent signings in '19) without their draft picks. After bottoming out at 20 wins in '17, they were able to increase to 28 wins in '18 and 42 wins in '19, that's with no lottery picks and no marquee free agent signings, simply from actually trying to do the best with what they had.
So replace the lottery with a "team draft." Worst team in the league gets to pick a team to tie their draft pick to, just make a rule that you can't pick yourself, and you can't later trade for your own pick. If the season ended today, it might look something like:
#1 WAS picks SAC (so Washington's '27 1st round pick is tied to SACs performance in '27).
#2 IND picks WAS
#3 SAC picks NOP
#4 OKC (picking for LAC since they own that pick) picks MIL
I think this would do a lot to eliminate tanking. I'm not going to tank to help another team, and tanking just to bet on another team's performance a year ahead is too much a risk.
Would never happen but I think it would work.