Subject to federal law, an employer has every right to set the conditions of employment in their business. If the NFL believes that guys getting high hurts it's brand and thereby damages its ability to attract fans, (i.e. future revenues) they can stipulate they don't want it happening. They then have to negotiate that issue with the players' union to get a contract. If the players' union doesn't believe its a big enough issue to hold up a contract, they've effectively agreed to the league's terms. That's between them and the NFL. I don't really care. After the agreement's ratified, its the "law". If players feel strongly enough about it, they should make sure its in the contract. As of yet, they haven't done so.
I also think its a "slippery slope" issue as well. How much weed is too much? What if they're high during the game? If the use is included in the next players' agreement and a coach or GM wants to get rid of a guy because he's screwing up because he's high, will the players' association file an injunction to stop it?
Sorry, but I'm not buying the Big Pharma angle. I think its a brand issue with the NFL. I think they're trying to project a certain image and allowing drug use by their players doesn't support that image. That may change as society at large relaxes its position on it.