I may be alone in this, but the hack-a-shaq at the end don't particularly bother me. At least, they don't bother me as much as the fact that all-stars can't complete one of the most basic plays of the game, the free throw.
First option: Leave things the way they are. Make your players take 100 free throws every day in practice. If they still can't make a FT, too bad.
Second option: In the last two minutes, or for an intentional foul, or under some other construct, the team that gets fouled gets to choose who takes the shots.
Third option: Advantage rule, as discussed by the OP. My fear is that if this rule is put in effect, the defense would simply ensure that any fouls are hard enough that the offense won't get an advantage out of it.
Mike