Существует SetSelectedItems (IEnumerable), доступный в ListBox, который вы можете использовать. Эта функция оборачивает изменения выбора в SelectionChange.Begin / End (к сожалению, конечно, доступны только для внутреннего использования), что должно привести к выходу только одного события изменения выбора.
Обратите внимание, что SetSelectedItems защищен, поэтому вам придется использовать свою собственную производную ListBox для его вызова. Странный выбор, тот.