У вас там несколько addEventListener, которые добавляют к элементам обработчики, но ни одного removeEventListener, которые эти обработчики снимали бы.
Я бы вообще выбросил половину кода, на сами li не нужно навешивать ничего, сделайте обработчик клика только на списке-родителе (
пример) и на кнопках со стрелками.
При клике по списку на кликнутый li добавляете класс с выделением, при нажатии одной из стрелок перемещаете li имеющие этот класс.
UPD: запилил еще одну версию стырив верстку у
Ragtime_Kitty
Добавил выделение пунктов как в эксплорере:
Клик на элементе выделяет только его.
Ctrl(Cmd)+Клик добавляет/убирает элемент из выделенных.
Shift+Клик добавляет промежуток от последнего кликнутого к предыдущему.