I see two problems here.
our salesman likes to promise everything to everybody
This is a clear example of siloing. The salesman is putting the Sales department's goals before the business's goals. That needs to stop.
There are various ways you could approach this. The simplest (and what I would suggest trying first) being simply approaching the salesman and having an open discussion.
If that doesn't work, consider having a developer on the Sales team. This developer's job would be two-fold. First, to be the on-hand technical expert. Second, to rein in the salesman should he start promising the sun and the moon.
Alternately, have the salesman start experiencing the pain that he causes. When he's promised too much and something needs to be cut, make sure he's the one to inform the customer that the expected delivery date for that new feature is 2 years from now.
It's very hard to keep focused on the most complex parts of development, when you hear your name every five minutes.
It sounds like you need a better change management process. Also a closed door (or, failing that, headphones) to show I'm working right now, don't bother me unless something's on fire. Are most of the requests that come in fires that need to be dealt with immediately?
If not, then you should set up a process for dealing with them. One possible approach to this is for requests to be put into a ticketing system (e.g. JIRA) and to then review them on a time that makes sense (1/day, 1/week, etc.)
If so, then you should consider splitting your team in two. Half will deal with fires, while the other will deal with the 'slower'/'more complex' development. Those designated as fire-fighters are standing-by to deal with the fires, while the others are focused and do not get disturbed. I recommend shifting these roles over time (e.g. 1/week), so that no one gets burnt out.