Вы также получите второй вызов, если Spinner selectedItemPosition не равен нулю при повороте экрана, так как Android устанавливает положение на то, что было до поворота. Используйте onSaveInstanceState для подсчета количества счетчиков в ненулевой позиции и используйте этот счетчик так, чтобы код OnItemSelected просто возвращался до тех пор, пока счетчик не был уменьшен до нуля.
Вы также должны быть чрезвычайно осторожны с блеснами, которые могут иметь видимость View.GONE. Я добавлю сюда еще немного текста, когда смогу найти время, чтобы точно описать, как с ними обращаться.