You'd need to know something about the error characteristics of your channel and what would be an acceptable false positive rate for your application. How often is there an error? What is the distribution of the number of bits changed? Do you have a single bit flipped occasionally, or do you get lots of bits flipped or the whole message munged when there is an error? Are the flipped bits close to each other, i.e. do the errors occur in bursts?
In general, you would not use a cryptographic hash, since the added time spent computing it as compared to a CRC will give you no benefit. You should use a CRC or other hash, such as one in the xxhash family. They are very fast, and are as good as you can get at making false positives a low probability. The CRC has special properties that protect against a burst of errors, i.e. several adjacent or nearly adjacent bit flips.