I think Salman Butt should take over from Afridi in T20Is after the WC. His previous captaincy stint was incomplete, and where he did show some glimpses of a thinking man who understood the game well.
I know he hasn't played any domestic T20 games, but still he clicked in the List A games, and his T20 record is decent, also he has many shots in his book as he is not a one sided hack, so he will click.
As far as the ODIs are concerned, if Azhar's failures continue as a captain then Butt should take over from him as well.
In Tests, post Misbah, he should be the automatic choice.
He can play for at least next 5 years, which will cover the upcoming two World Cups.
P.S: Moral brigade should stay away as he has been punished already.