I don't understand how blockchain applications can ever be considered "anonymous", when there's a public ledger and everyone knowing your wallet address can track all your transactions.
That sort of transparency is not an intrinsic property of blockchain-based systems. There are already several cryptocurrency protocols in use that obscure data in their blockchains to various extents.
Dash [0] does CoinJoin-style mixing at the protocol level. Some newer systems use cryptographic techniques to provide even better security guarantees. Monero [1] implements the Cryptonote protocol, which uses ring signatures [2] to obscure who owns what and who's transacted with whom. Zcash, an implementation of the Zerocoin protocol [3] that should go live in a couple of months, will use zero-knowledge proofs [4] to similar effect.
There have even been a couple of well developed proposals for changing the Bitcoin protocol to make it impractical to track transfers of coins. And one of them will probably get implemented eventually, since privacy (unlike transaction throughout) is a real concern among many of the leading Core developers.
There was a paper a few years ago (when the need for proper anonymous bitcoin spending came up), something about zero-knowledge proofs, and you can switch your known bitcoin (public key, basically) to this anoncoin and you can then switch that back to a bitcoin, but all outside observers will just see that your known address "bought" an anoncoin. Of course, if someone observes the whole anoncoin switcher network, all they would see is that anoncoin users together bought some bitcoins.