I agree it is a very tough call and very subjective. We can watch a replay over and over and people will still disagree...based usually on which team they are rooting for.
How about something very black and white (although possibly unfair). For the calls near the basket, if the offensive man has left the floor and then contact is made, it is a block. If his foot is still on the floor and contact is made, it is a charge. Then, the two criteria will be easy to determine. Was a foot still touching the floor or not and was there contact or not. If the player is just driving and the defender isn't even trying to establish position, then the call is against the defense, unless the offensive man clearly creates contact. Those calls are not as difficult to make.
I'm also of the opinion that blatant flops should be called a technical foul. If one of the refs sees that it was a flop, even if another called the foul, review the tape. If it was a flop (no, or minimal, contact and the player goes down hard) call a technical. It would quickly eliminate that BS.