I think generally the thing to do would be to come up with some sort of measure of "future expected value over baseline per dollar" with a decaying function over time (because years further out are less certain). Your optimal player is one who currently provides a lot of value over baseline per dollar, whose future production is likely to be as good or better.
One thing with auctions is that the baseline you choose is much more important than it is for drafts, because there is a direct effect on VBD points available based on which baseline you choose, and you're calculating value using VBD points available. So you have to tweak those values until they seem reasonable for your league and your personal style. I use explicit point production numbers instead of "baseline = RB24" style, because I want to be explicit about how many points I think a baseline player provides, not rely on whatever the projections are for RB24.
Then, you also need to consider that expected point calculations understate the value of top players. Because you have a fixed number of starters, you'd rather have one player getting 100 VBD points than two players getting 50 VBD points each, so the 100 VBD player should cost more than the two 50 VBD players combined. This year I looked at doing a sigmoid function but I ran out of time to get it working in Google Sheets so I did a hacky approximation:
VBDA = VBD + ( arbitrary multiplier * ( VBD - ( arbitrary crossover ) ) )
After playing around with it I used arbitrary multiplier = 2.0, and arbitrary crossover = MAX(VBD)/2. So, it's basically "expected value = VBD * (modifier that moves VBD points from crappy players to top players)".
Then, Cost = ( Total bid $ available / SUM(VBDA) ) * VBDA [ Cost = this player's proportion of the total VBDA points available ]
Note that Total bid $ available should take into consideration your roster requirements; we have 18-player rosters, so everyone is required to spend at least $18, which means bid $ available starts at $984 rather than $1200.
So, in my league, McCaffrey had the highest VBD number (153), and the arbitrary crossover was set to MAX(VBD)/2, so 153/2 (76.5). $984 available, total of 9367 VBDA points available (calculated from VBD projections), so McCaffrey had:
VBDA = 153 + ( 2.0 * ( 153 - 76.5)) = 306, and
Cost = ( $984 / 9384 ) * 306 = $32.09.
Because the first calculation is measuring how far you are from the arbitrary crossover, it adds points for players who are well above the crossover and subtracts points for players who are well below. For player who's projected at 76 VBD points, like David Montgomery, VBDA = VBD, while for McCaffrey VBDA= VBD + 153, and for, say, Kareem Hunt, VBDA = VBD - 30. Hunt's 30 points, and others who are below the crossover, are reallocated to players above the crossover.
So, all that being said, you can feed in a different number for VBD based on expected future production. Maybe have an annual discount for each player, so a solid young player's expected future value is reduced by 20% per year, while an old guy is reduced by 50%. You may want it to be different for different positions, too, as a valuable QB, for example, probably gets less of a discount than a valuable RB. Let's say you're going to discount QBs by 15% per year, WRs by 20% and RBs by 25%, with accelerators for players over age 28 or something.
McCaffrey = 307 + 230 + 153 + 76 = 766 [expected VBDA points over 4 years]
D.Adams = 276 + 221 + 166 + 111 = 774
Mahomes = 276 + 235 + 194 + 153 = 858
[You could do this calculation with raw VBD if you don't want to go through the weighting calculation for VBDA]
So with these assumptions, McCaffrey is clearly the best 2-year contract and Mahomes is clearly the best 4-year contract.
At least, that's kind of how I would think about approaching it if I wanted to be quantitative.