The only practical possibility to pass trough a serious forensic investigation on blockchain without revealing where are funds coming and going is by means of a off-chain server. I mean on Ethereum blockchain.
The zSNARKs are too complex to be practically implemented and executed (at the moment) on the EVM, the other hiding protocol permits many obfuscation on data, but any forensic investigator is able to analyze the whole picture and to understand perfectly.
It can be demonstrated that if Eth Blockchain do not be so complete to store on blockchain ANY function call with ALL the function parameters every time the blockchain is changed, you could be able to build truly anonymous eth transfer. But it does. Stores them.
So you need an off-chain path, i.e. the transaction must be sent to a smart contract interacting with a dedicated server, let’s say via http as example, which, after anonymization, can send funds somewhere interacting again with some smart contract from the web or similar paths. And the transactions record on that server have to be immediately erased. Something like it!