Avrei più o meno risolto il problema 1) (quello dell'NPE in caso di modifica della categoria), semplicemente usando una variabile globale (listIndex) dove "appoggio" l'indice dell'elemento selezionato prima di perdere la selezione, e poi lo ri-fisso dopo il ri-caricamento della lista con:
menuList.setSelectedIndex(listIndex);
Ovviamente non va bene in caso voglio modificare un nuovo menu appena dopo averlo inserito, ma tanto è una possibilità che ho tolto, vista la rarità dell'evento.