He has a heart like flint/granite and he has eyes like a hawk are similes (the word "like" indicates a comparison.)
He has a heart of flint/granite and He has the eyes of a hawk are metaphors.
Whether we are more likely to use a simile or a metaphor in a particular situation depends, among others things, on whether there are more-or-less set expressions using a similar form.
I would say that "he has eyes like a hawk" is a more-or-less set expression; if you used "he has the eyes of a hawk", you would be doing so in order to make what you say more unusual, more striking.
As regards "he has a heart of flint/granite", the common expression is "he has a heart of stone". So using "he has a heart of flint/granite" is already striking, because it takes you a step away from the common expression. "He has a heart like flint/granite" takes you two steps away from the usual expression. I think it actually weakens what you're saying....