But one way to mitigate it is to assign a cost to keepers, e.g. the cost to keep a player is a draft pick in the round prior to the one in which he was drafted, and it increases a round every year you keep him. So if you drafted Gurley in the 2nd round last year, you can keep him this year but you lose your 1st round pick.
Sounds like you're trying to say "let's take last year's redraft rosters, add keeper capability from them, and keep X players for this year" which is the wrong approach IMO, because for example if the Dalvin Cook owner last year knew he'd be able to keep him this year he probably wouldn't have dropped him back in Week 6 of 2017.
Start a new draft, all players eligible, with the understanding that next season you'll be able to keep players based of this year's final roster. And assign some costs to keepers as @Ignoratio Elenchi mentioned, and you can also consider adding limits to # of years kept if your league wants turnover of players