The answer has to come from employers. For example, in the case of the "table of wealthy, suited men" who "asked if she had an intimate piercing" ... they should simply have been thrown out. I wouldn't want to eat at a restaurant that tolerated that sort of language towards staff, so it should be bad for business. If people aren't allowed to smoke in a restaurant, in part because of the effect on staff, then how the heck can this sort of behaviour be tolerated?
If the employer won't change and, in the short term, can't be held to account, then people must simply choose to work for better employers.