In a similar topic Validate if commit exists they recommend:
git rev-list HEAD..$sha
If it exits without error code than the commit exists.
You can just run git cat-file -t $sha and check it returns "commit". You are right, you don't need to actually print the actual object for that...
git cat-file -t $sha
I'm not 100% sure that what goes on behind the scene is more efficient, though.
test $(git cat-file -t $sha) == commit