I think $21M is appropriate, but I might go a little higher. Frank Gore in his prime signed for four years, $25.9M. We all know that DeMarco Murray is not Frank Gore, but he's pretty good. Gore's contract also only had $13.5M guaranteed.
I would give Murray four years, $22.5M with $10.5M guaranteed. Approximately $5M/year average. That's a decent enough cap hit annually (especially if you can take the brunt of it in year one) with incentive-laden years on the tail end, plus lesser dead-money/cap hits in the latter years.
A four year deal also puts his contract year in his age 30 season. After that, even if he's still producing, I let him walk. That gives the Cowboys approximately three years to find his replacement via the draft, four at the most if they wait until letting him walk in free agency to draft his replacement.