In reality, from money laundering law enforcement point of view, C is usually the one to blame, because the dirty money ends up at C's address
If that is true, then the law is pretty stupid, in my opinion.
The law is not stupid. Person C is stupid.
Stupidity of not knowing is guilty these days.
You got pulled over for speeding, but you can't say you didn't know the speed limit. Judge can consider the situation, and lower the penalty, but you are still guilty of not knowing.
"Person C unknowingly/unintentionally received stolen fund"
Come on, don't be so naive. In reality and in most of cases, Person C knows where this fund came from which is not so legal source.