120 carries for 560 yards at 4.7 yards per carry with 4 tds as a backup, plus 20 catches for 145. He wasn't a third down back running into soft coverage, a lot of those carries were tough yardage carries or running the clock out against teams that knew he was coming. That was good enough to be anointed starter and have them let their successful starter from the previous year go.
If you look at his 2014 season, when hwe rushed back from an appendectomy that left his core strength diminished and led to a season ending groin injury, then yes, that was a bad year. 23 carries for 67 yards and a td against the Colts is not going to get it done. He still had 12 for 60 with 3 catches for 29 against the Chiefs, which isn't too shabby. Then he played two of the toughest defenses in the league, the Seahawks, where he got hurt, and then the Cardinals, where he was injured for the season.
Nothing in his career so far has shown that he's a bad running back. This isn't Trent Richardson running for 3 yards a carry, it's a guy who just doesn't fit the stretch runs that Kubiak uses when he has two other guys in the roster who got the scheme better.
Where you see people worrying about their sunk cost, I see confirmation bias from guys who didn't like him coming into the league.
I don't think anyone ever thought he was a great talent, so I agree with you there. What's changed is his opportunity. And unlike other guys, where sunk cost is certainly a concern (like Christine Michael), the Broncos are reportedly shopping him and may move him before final cuts. It's easy for you to say trade him for whatever you can get or cut him, because you don't own him and wouldn't pay much for him. But they're are other people who like him more than you do and his situation may change soon. If there are people trading him for nothing out they're, I'm buying. It's easy to imagine his value spiking in the next week or next year.