The naval tradition would be for most crew be addressed by their surname only, for the NCOs to be addressed by their rank only (since there are basically never multiple NCOs around in Star Trek), and for senior officers to address junior officers up to LtCmdr rank as "Mister Surname" as an alternative to the more common "Rank Surname" or "Rank".
Using "Mister" for an enlisted person would go against tradition, regardless of who was doing the addressing. Using "Mister" for a superior officer would go against tradition, too. Using "Mister" for a full Commander or above would typically be considered insulting; you could just as well say "Buster Spock" and pronounce it "Bastard"... For some reason, though, the tradition for Starfleet is different, although perhaps simply in the sense that the top rank to be so addressed has been hiked from LtCmdr to Cmdr.
In theory, for people from Cmdr rank up, "Sir" is inappropriate as well: Sulu should really be saying to Kirk "Aye aye, Captain" or "Aye aye, Admiral" instead of "Aye aye, Sir". But that's something that has eroded away from naval tradition already, to some degree, from what I hear.
Enlisted people speaking between peers would use whatever they like - surnames, first names, nicknames, rude gestures - but it's common to use surnames simply because that's what everybody else uses anyway. Form of address for enlisted-to-enlisted talk is not all that important anyway because enlisteds are not supposed to talk to fellow enlisteds all that much.