Y si usas un framwork, yo para un caso como ese utilizaría VueJS
y el problema de los select lo solventaría con
Vue Select - Taggable & Push-Tags
Es muy conveniente que sea un select y al mismo tiempo te permita añadir nuevos valores en caso de no estar el que se desea.