What's a less harsh substitute for crusty/cranky?
Solution 1:
Another approach is to describe what he did that was grumpy, without describing it as grumpy.
For example:
John liked to have a cup of coffee first thing in the morning. You could always be sure whether he'd had his coffee, because he'd be sure to let you know if you tried to talk to him before it.
John liked things to be done in a certain way, and had no problems expressing himself when things weren't that way.
The audience then reads between the lines, and sees 'Ok, he was a bit grumpy'.
I think this approach is possibly a bit more passive aggressive, and can come across as ingenuine or patronising, so I'd be a bit careful about it.
The key would be to express this part of your speech with some humour, and followed up with what you enjoyed about the guy.
Solution 2:
The following words might convey a less negative connotation while still implying a sort of elderly snappish temperament: bearish, gruff, determined, fixed, and tough.
However, in this case a phrase description might suit better the purpose. The benefit of a description in phrase form is that it allows for far greater opportunity in the specification of more complicated intention such as yours. Certain phrases that you might want to include could be the following: hard-boiled, no-nonsense, grumpy as the dwarf, surly as a sailboat captain, etc. The use of simile and phrases helps to take weight off the exact words and presents the reader with an image. If you use one of the words you posted with an image that is more heroic or humorous than it helps to make your intention more clearly amicable.
Solution 3:
You could use a simile.
For example:
In many ways, John was like a cuddly grizzly bear. He could be prickly at times, but at the same time endearing and close to our hearts.
I guess I haven't solved the problem, as I'm still using one of the synonyms you've listed, but it's good way of mitigating or adding context to the word.