My experience has been that saying no is almost as bad as showing interest in terms of inadvertently inviting more back-and-forth.
After a bad experience, I watched other people getting through a crowd and vendors without constantly apologizing and sidestepping. No saying "no", no putting a hand up, no making eye contact... you stare through the crowd as though it does not exist. Eyes on the horizon.
It's not perfect, but it works better than anything I've tried so far.
ETA: I do not consider it rude or I wouldn't do it. I feel it's ethical to avoid wasting their time and energy by engaging if they've got no chance with me.
It's complicated to me. I actually have a different policy in an environment where I'm not in a crowd full of potential customers or even aid. I don't want to be dehumanized but I don't want to dehumanize either. In a very crowded and competitive environment, staring straight ahead is not dehumanizing in my humble opinion. When I am one of a few people that has passed on the street and someone close to me is engaging, whether to sell me something, ask for something, etc... If they are not being disrespectful, I personally prefer to acknowledge them as I acknowledge many strangers in the grocery store or parking lot or whatever. The world is dehumanizing enough.