Тут два варианта. Первый - банальный. Фрагменты добавляются каждый раз через add. Соответственно, складываются друг на друга.
Второй - менее банальный. Есть баг (я такой встречал с databinding), при котором фрагменты так же остаются друг на друге, хотя делаешь replace.