My company does the no-negotiation thing (and has done so for about 13 years now) so I'm surprised to learn that its a completely unreasonable model.
On a more serious note, the way we choose a salary is to look at various similar companies in the area and get an idea of what a competitive salary for the position/experience level is. If people are happy with this (they almost always have been, at least since I started) they take the offer; if they aren't, they don't. Its pretty simple, and avoids the issue of paying people for being good at negotiation, which as far as I can tell has no correlation with being a good developer.
Coincidentally my current employer does not negotiate either (well, not for standard developers...)
Our companies can safely refuse to negotiate because 1) they can let other companies in the area negotiate to set prices for them (without negotiation, determining the value of an employee becomes massively inefficient, mostly at the expense of the unemployed, who will tend to accept positions lower than they could negotiate for, lowering the overall regional salary), and 2) because generally for standard dev positions, they are aren't looking to hire a specific person. Any person that fits the roll will do, and there are plenty.
You want a college grad to start training on your software stack? Well sure then, figure out the regional salary for recent college grads, offer lots of college grads that salary, and take those who accept. So long as you have enough grads to choose from and eventually the positions get filled, who cares right?
You want recent Standford grad Joe Smoe who recently made waves online demoing that really cool shit that accidentally compliments [Top Secret Project]? Without negotiation, fat chance. There are no regional stats for Joe Smoe's expected starting salary. You either negotiate or your gamble.
If you are finding an employee to fill a position, you can get away with no negotiation if others in the industry still negotiate. If you are creating a position for a person, you have to negotiate.
If every company were forced to acted as our companies do, and for every position that they were filling, it would be catastrophic.
You may have missed out on some good people over the sake of a few k... especially if they (for instance) have domain specific knowledge that puts them ahead of other folks in the same sort of bracket?
On a more serious note, the way we choose a salary is to look at various similar companies in the area and get an idea of what a competitive salary for the position/experience level is. If people are happy with this (they almost always have been, at least since I started) they take the offer; if they aren't, they don't. Its pretty simple, and avoids the issue of paying people for being good at negotiation, which as far as I can tell has no correlation with being a good developer.