One other option, if scripting on the NPC is practical is to just force a custom greeting instead of using a standard one. So long as this greeting doesn't end the conversation right there, it should function in much the same way in nearly every situation.
scn <scriptNAME>short talked ;; used if you want to force other greetings after an initial one or need a variable to determine what greeting is usedbegin onactivate playerif getdead != 1 && isincombat != 1 && player.issneaking == 0startconversation player specialgreetingelseactivateendifend
In testing with a non-special, essential character I didn't notice any obvious problems. There was a slight delay between activation and the beginning of the conversation, but as this usually was something along the lines of turning to face the player before speaking (looks more natural), seemed to be more of a positive aspect than a negative one. May not work as well with a sitting NPC though.