How to tune XGBClassifier's each and every hyper-parameter "efficiently"?
Its kind of difficult to avoid a large processing time when you have many parameters and a large sample. 

A better method than gridsearch is Bayesian Optimization, this library even has done examples for xgboost ( https://github.com/fmfn/BayesianOptimization ) 
A good trick as well is to take a reduced sample of your data set, if you have over 2 million samples, you might acquire very similar results with smaller subsets (given that they have a similar distribution).