If I have an output of 1 BTC, and I want to send you 0.3 BTC, then that 1 BTC gets split up in 0.3 and 0.7BTC the 0.3 goes to your address, the 0.7 goes to a new address belonging to me. If that 1 BTC was "known bad" is the 0.3 BTC now also "known bad"? Also, for the outside it is a guess whether the 0.3BTC or the 0.7BTC transaction was my "change".
You cannot fully trace every transaction. You can just find every other transaction it was linked to. That list grows somewhat big.
"CoinJoin requires multiple parties to jointly sign a digital smart contract to mix their coins in a new Bitcoin transaction, where the output of the transaction leaves the participants with the same number of coins, but the addresses have been mixed to make external tracking difficult."
For example, the service Whirpool [2] cycles users' Bitcoin numerous times; the end result is one which can be interpreted 1,496 different ways.
Wouldn’t the simple solution be tagging coins that exited such a tumbler?
Perhaps. But the legal precedent is for laundered money to be tainted per se. The laundering itself taints the cash independent of any preceding criminality.
And because none of the wallets aren't accurately linked to real persons all tree actors in the above transaction could be the same entity with 3 distinct fictional personas.
Add to that that the former soviet block is littered with regions where nobody really agrees on who the legitimate government is and where the entire economy happens using foreign currency, there is plenty of ways to deliberately block investigations from simply following the money trail.