Как сократить код?
Вообще, можно очень серьезно сократить. По сути, вам для подсчета нужна единая функция, которая будет брать три числа из полей, умножать их друг на друга и потом на число. Еще лучше убрать глобальные переменные, которые изменяются в коде. Получается вот такой простенький кодconst persons = document.querySelectorAll(".counter-block-input")[0];
const restDays = document.querySelectorAll(".counter-block-input")[1];
const place = document.getElementById("select");
const totalValue = document.getElementById("total");

function calculateTotal() {
    const personsSum = +persons.value || 0;
    const daysSum = +restDays.value || 0;
    const placeIndex = place.selectedIndex;

    const total = (daysSum + personsSum) * place.options[placeIndex].value * 4000;

    totalValue.textContent = total;
}

persons.addEventListener("change", calculateTotal);
restDays.addEventListener("change", calculateTotal);
place.addEventListener("change", calculateTotal);
calculateTotal(); // сразу вызываем, чтобы обнулить поле
Ну вот это:if (persons.value == "") {
                totalValue.textContent = 0;
            } else {
                totalValue.textContent = total; 
            }
можно заменить на тернарный оператор и вообще вынести в отдельную функцию. Это тоже:persons.addEventListener("change", function() {
            if (restDays.value == "" || restDays.value == 0 || persons.value == "" || persons.value == 0) {
                totalValue.textContent = 0;
            }
        });