How can I prevent a shower curtain from drifting into the shower's occupant?
This is at least easy to try:  Go to a place that makes vertical blinds.  Buy a handful of the steel plates they use to keep them hanging straight.  Pick up some 3/4" diameter disk magnets.  Put plate on one side of curtain, and a magnet on the other.

If this works, then buy a can of that vinyl goop that you dip tool handles in.  Dip the plates into the goup.  This will keep them from rusting, and if they swing against the wall tile they won't leave a mark.  

The weights are easily transferred when you install a new curtain.

If you have a delicate finish on your tub, you may want to change the style of your weights to reduce the chance of scratching:

Weights have beads of silicon seal on them.  Or use rubber drawer bumpers (See Lee Valley Tools)