У вас проблема с повторным использованием ячеек.
По сути, происходит то, что tableView создает только столько ячеек, сколько видимых на экране, и как только ячейка прокручивается из поля зрения, она повторно используется для другого элемента в вашем источнике данных.
Причина, по-видимому, исчезновения кнопок в том, что вы уже удалили кнопку ранее, но теперь, при повторном использовании, не сказали ячейке снова показывать кнопку.
Исправить это просто, просто добавьте:
cell.addButtonOutlet.alpha = 0
в ваши разделы 0 и 2 (еще блок).
То же самое с изображениями, предыдущее изображение сохраняется, если только вы не скажете ячейке удалить изображение при необходимости, поэтому просто добавьте это:
if let imgid = img {
let url = MTApi.url(for: imgid, size: .normal)
cell.userImageView.sd_setImage(with: url, placeholderImage: nil, options: [], completed: nil)
} else {
cell.userImageView.image = nil
}