The transparency of the accounts is a "feature" of almost every blockchain. Accounts only offer pseudonymity until you connect it to a real-world identity with someone. By registering an identity, you just change the psuedonymity string. If you use "my.real.name*iov.value" or course this is a public connection. If you use "lolz1793*iov.value" that leaks no more info than your hex account.
The standard approach to avoid this in bitcoin is to use a HD wallet and generate multiple addresses, which may appear someone unlinked on from the other. A deep network analysis could also give some correllations between them, but these are effectively separate identities, and you can do the same with iov, generating multiple account names that you give to different people.
There are solutions that aim for deeper anonymity such as monero and zcash. Zcash seems to have the mathematically more secure algorithm. If you wish privacy, you could always use multiple public-facing accounts to interact on iov, then atomic swap into a zcash shielded account. In fact this is probably the only way to achieve anonymity on any blockchain today.