I think most hashes are equivalent, or in some sense equivalent, to polynomials modulo some base. (CRC32 was rationally designed using Galois fields, so its inner workings are perfectly transparent.) In principle, you could take a hash function that's based on a known polynomial and find the other polynomials that complete an orthogonal basis; then you would have a process for generating a set of hashes that contains 100% of the information, i.e. they are invertible for any input. Another way to phrase this is that they can form an invertible square matrix. My guess is that most hash functions that are adequately well-screened/tested basically contain the max amount of information possible (this is just a gut feeling, based on my own experience playing with hash functions... I suspect that if a hash function had redundancy in its bits, a tool like SMHasher would detect it).

I am somewhat overextending what I know about math, because I never went down the matrices/linear algebra track when I was a student. But I guess my overall hunch is that hash functions, generally, behave in much simpler and more predictable ways than most people think (they're cooked up by irrationally stirring around bits, which just obscures what's happening and adds a cloak of mystery). CRC32 doesn't really do anything for the sake of enhancing diffusion, like purpose-designed hash functions do. However, CRC32 fundamentally doesn't throw away any bits of information, so it could probably make a good-enough hash function if you just pass its values through a second permutation to add diffusion. My guess is that with a second integer->integer hash function applied to CRC32, it might perform indististinguishably from other general-purpose hash functions.

I guess my point is that hash functions, notwithstanding being described in probabalistic terms, are actually 100% deterministic and predictable (this is almost too obvious to state), and -- moreover, perhaps -- the majority of hash functions can be pretty easily understood with basic number theory and discrete math. Speaking of them in terms of probabilities allows you to do some useful calculations, of course, but at some point it becomes a dead end. "Random" is just a way of saying "I don't know." Sometimes randomness is too blunt of a tool, perhaps. Maybe sometimes we do know the answers, we're just not seeing them.