Its very simple. When a defender is shoving Yao in the back with both hands while Yao is trying to establish post position, thats a foul that the refs can and did ignore. However, when a player drives to the basket (with no congestion), gets hacked on the arm, and the ball goes flying out, thats a call the refs cannot ignore. Wasn't that simple?