1)
let showing = list.filter(':visible').length;
list.slice(showing - 1, showing + numToShow).fadeIn();
Во первых - почему showing-1? А если showing = 0? Да и так как вы задали list вне обработчика - он статический.
Можно смотреть - у каких элементов отсутствует класс hide и уже в нем отображать элементы с show()
Но лучше конечно нормально переписать, чтобы значение фильтра сохранялось в кнопке. Еще там баг - при повторном применении фильтра - автоматом срабатывает Show More.