This is the solution to the issue of abusing the system via 'tanking,' and I wonder why this has not been discussed, considered, and implemented already by the league. If a team sucks, by all means let them have a good shot at a high pick. But if they do get the first overall, they shouldn't be able to do so for a few years. Teams tend to suck for a few consecutive years, but it makes sense to me that a team should be locked out of top 3 picks if they've had 1OA recently.
So, what if a team legitimately sucks, and wins the lottery, but had already traded their pick?
Alternatively, you legitimately suck and win a lottery to draft the next Yakupov, continue to legitimately suck because Yakupov, only to be blocked from drafting McDavid? Sucks to be you, you were lucky in the wrong year?
Honestly, the McDavid/Eichel year was fine, the odds were such that you had no guarantee of getting 1st OA, and the team that legitimately tanked missed out on the generational guy (but was fortunate enough to still get an elite guy because of a deep draft).
Lottery for the top 3 picks can push legitimately bad teams so far back that they are in a much higher bust risk pick and far less likely to be a franchise guy.
Moving up only 4 spots gave the worst team too high of odds that the appearance or perception of tanking was high. current system punishes bad teams because of past perceptions. Middle ground is best imo, though the top 3 in the lottery does give teams not at the bottom a lot more reason to care about the lottery, so it's probably a good business decision rather than a fair one.