the first thing is to not reuse addresses. rather, generate a new address every time
Well with a lot (if not all) wallets that you use, the wallet generates a new address each time you receive bitcoins to the previous address... so that's already implemented.
I'm not aware of any that do that. Can you name some? Xapo, Circle, Coinbase, Blockchain.info, MultiBit, Bitcoin QT, Electrum, (I know I'm missing a lot here) definitely don't.
Well I personally use breadwallet for iOS... I know for a fact this wallet does, but have used blocktrail in the past as well that did it... I have just assumed that all wallets changed the wallet address after each transaction had been received?