I think people are overrating Hafeez lower order a bit, and underrating his contribution with the bat overall. Ever since he came back in 2009 he has been one of our best bats in ODIs even at top order. Yes people might find that strange, but just compare the numbers, averaged high 30s, just under 40 for most of that period. Even now, he's our second ranked batsman. For a long time he actually used to be our second best batsman despite the hate. People overrate Malik, he's been doing well in recent past, but Hafeez has been performing against the same teams too, just Malik's been doing a bit better except CT.
The reason why I wanted Hafeez to bat up the order was simply so we could bat better talent down the order. Batting up the order is difficult. Hafeez can't do it as much now, his reflexes are gone, too scratchy. He has always been able to accelerate when he played himself in, this isn't new. And given the times he came in at the CT, again you'd expect him to be able to accelerate like that too, its not that surprising.
The whole point of Hafeez IMO was he provided 10 overs, and didn't sacrifice batting strength. I felt he should have batted whatever position that would allow youngsters to play at their ideal positions. We had a lot of middle order talent e.g. Umar Akmal, Maqsood etc. and didn't make sense dropping them to accommodate Hafeez.
This has changed somewhat over recent years with Sharjeel (guess he's gone now), Zaman, Babar coming in, guys who can play top order. Hafeez isn't competing with the likes of Shehzad, Azhar, Kamran Akmal etc. at the top of the order anymore. While look in the middle order, we have little talent coming through there now, with umar akmal and Maqsood falling off. In fact our middle/late order now relies on the experienced players in Sarfraz and Malik.
Hafeez's strength was the fact he was one of our best batsmen and provided 10 overs (to rival our best bowlers). That made him really valuable. This is no longer the case, he's more a less effective part timer compared to before, and distinctly down the list in terms of our best batsmen in the team (he's after Babar, Zaman, Sarfraz, arguably Malik, he could be behind Haris when he comes back too). His extra bowling, and his ok batting still perhaps give some use, but he's definitely less of an asset than before and seems a player on the wane. He would not make it as a bowler alone, or maybe even a batsman, while before he definitely could as either, there lay his strength.
I'm not sure about whether Hafeez should stay. I mean really most would have hoped Umar Akmal would have excelled in the middle order by now. Our middle/late order talent just hasn't met their potential, it's sad. And yet I could tell you a player who could walk into the middle/late order right now to replace Hafeez (and Malik) atm. Even the guys who you could argue such as Usman Salluhuddin, Fawad Alam etc have less striking ability and will struggle to keep the run rate up. Not to mention our allrounder at 7 in Imad, Imad's place in the team is already looking shaking too, he might need to be replaced soon.
My opinion is to keep Hafeez at 6 for now. Sarfraz definitely should be batting up the order to make more of an impact, I'd have Sarfraz at 4. Try out younger players in T20, and maybe we can identify a talent to eventually take over that place. Both Hafeez and Malik's windows aren't going to last long, their time's nearly up, but I don't see the harm in them being in the team as long as they're performing until we identify younger talent to replace them.