Touching babies/small children/pregnant bellies is very cultural, and these people most likely have good intentions. I live in San Antonio and have three darling girls (one with very curly hair too!), and wow - what people will do without asking! People in the Northeast (where I grew up) wouldn't dream of being so open. It would freak me out when older shoppers would come over and touch my 3 month old. So, I sympathize with your situation.
When approached by a Toucher in the grocery store, I simply start moving the cart to give people the hint, usually with a quick "Thank you" for their inevitable compliment. Either that, or move in between the stranger and my daughter with my arm, a bag of apples, etc.
If your daughter is old enough, teach her to say "excuse me" when people touch her unexpectedly, and maybe to gently push away with her own hand. Also, if she likes to shake hands, tell strangers that is the way to greet your little angel ("Clara likes to shake hands when meeting someone.") If she really doesn't like people touching her hair, just mention that "Clara is very sensitive about her hair" when you see people going to touch it. Just the thought of a toddler temper tantrum is enough to scare most of us!
As for your waitress, say something if you feel she is getting overly friendly - maybe the "she is starting to get sensitive about her hair" comment will work. Since she sees your family often, I'm sure she feels closer to you than most guests. Hopefully she will get the hint without you having to be blunt (by all means be blunt if that's what it takes - I don't want hair in my dinner, either!).
On the bright side, children grow out of this "stage" - like it's their fault! Ha! For some strange reason, people don't touch 4 year olds like they do babies. They just talk to them instead. :)