This function takes in not a DER signature, but a DER signature appended with hashtype byte.
I suggest calling plain DER signature a "signature" and a signature with hashtype - "script signature".
So the functions could be renamed like so:
IsDERSignature -> IsValidScriptSignature IsLowDERSignature -> IsLowScriptSignature IsDefinedHashtypeSignature -> IsValidHashtypeInScriptSignature
In fact, I don't see a good reason to allow invalid hashtypes at all. Validity of hashtype should probably go right in general verification code (in IsDERSignature).
Thoughts?