I think the main point is that the Niners bet on going cheaper with Armstead and hitting the draft pick to replace DeFo and lost that bet
Kinlaw ended up being a bust and even though Armstead found his calling playing DT and is very good at it, he continues to have health issues more often than not.
So having lost that bet, it becomes clear we could've just given DeFo the contract he wanted. I don't buy for a second that it was an impossible task. We are seeing it right now in the wake of Bosa's extension (and really, any big time player a franchise
wants to keep): you do the math and restructure every contract you can to make cap space. Once the deal is signed and you kept your star player, then you can restructure his contract too, even a year after he signed.