How is signing a 23 year old running back who is coming off his rookie contract as the best or very close to being the best in the league to a new deal a "win now move"?
McCaffery already has an awfully large amount of miles on his legs between college and the pros. To expect him to produce at the level he has for the next 4 years, is expecting a lot. In addition, they don't have a franchise QB on the roster now, which means they need to get one. Even if they get that guy in next year's class, that means McCaffery has 2-3 years left of elite production for that guy to grow with. Which means you are essentially expecting that in year 2 of that QB's career, you are going for it all. Given that you just traded away Trai Turner, one of the best young OL in the game (supposedly because you didn't want to pay him) I don't see how those moves go together.
When you also consider McCaffery was your best asset (after trading Turner for an older/aging veteran and not draft picks), something that could be traded to acquire tangible assets that would allow you to get the QB. By keeping him, you are saying they can find the guy anyways, which is possible, but as we have seen, it's really really hard to tank/suck in this league. Miami did the best impression of it on purpose I have ever seen, and then they still won 5 games and are picking 5th. You need to make sure you have assets to either go up and get "the guy" or if you do go out and "earn" the top pick, you can use those assets to help that guy grow early in their careers.
So maybe signing a mega deal for McCaffery isn't really "win now" but it certainly can be seen as a mistake in trying to win the long game.