“Grump with a heart of gold” is a classic, but also consider:
Mercenary scumbag who invariably manages to contrive a hilariously self-serving justification for doing the right thing
Seeming fatalist who in fact cares a great deal, but unconvincingly maintains they’re only getting involved because they have nothing better to do with their time
Fussy coward who insists on facing every danger headlong because they’d rather keep the peril where they can see it
Repellent jerk who’s actually very principled, but takes great pains to conceal it because they’re inexplicably committed to upholding their reputation as a total sleazeball
Stoic utilitarian whose logic is always just far enough aslant that you’re never 100% sure whether they’re fucking with you