I'd say you are undervaluing him. He played well last year when he finally got playing time. You can't just assume that he has nothing to offer simply because he is inactive each week. He is inactive because they don't need him right now. Their is no point to keeping James and Hunter on the active roster when only 1 of them is going to get any carries.
I'd consider a 3rd round ok value for him, but I'd also take a 3rd for Hunter. There is no reason to just give away either of them. Dixon is the one you would want to get rid of but who would actually trade for him? He is not a very good running back and teams don't typically make trades for special team players.
Williams though I guess take what you can get. Again though he is just not very good. They might could fleece a team for a 6th. I guess you're right though might as well get what you can get rather than have to release anyone. I still would not move Hunter or James though unless the offer was right. They are still both on very manageable rookie contracts. Hunter only has 1 more year on his deal though so the 49ers do have to decide if they are going to pay him or not probably during the offseason.
I am valuing James as worth less than a 2nd round pick. That's all. How is that undervaluing him? I'm not assuming he has nothing to offer. I know he brings some unique skills to the field. However, he plays one of the most replaceable positions in the game, and is good for probably about 10 touches per game. He also isn't all that explosive and his lateral ability is vastly overrated. There is a reason he is always inactive. The fact that you give LMJ greater value than Hunter serves as strong evidence you strongly overvalue him. People talk like they have similar skill sets. If we assume that's true (it's not, Hunter does a lot more), then the guy who gets to play must have more value. You admit this at the end of your first paragraph, but still say James has more value.