Нужно. Если ей еще и пользоваться будут, и вы не поленитесь собрать статистику, то можно написать главу об использовании продукта юзерами. Это несомненно понравится дипломной комиссии.
Если observable сфейлился, то как бы он все, стал героем. На повторе нужно новый создавать. Можете прицепить к observable оператор retry, который попробует перезапустить его несколько раз, но потом все равно новый нужно.
./gradlew dependencies
в получившемся графе ищете повторяющиеся зависмости и эксклюдите их.
Там даж написано что аннотации jetbrains дублируются. Осталось только найти в какой либе
FrameLayout, как уже упоминали выше. Можно попробовать даже обойтись только FrameLayout и ImageView. Прогресс бар нарисовать в xml и нацепить на фрейм при помощи android:foreground
Все в кучу. Бизнес логика перемешана с отображением, мидл должен иметь представление как все это разделить. Можно было шаблонизировать те же адаптеры и фрагменты. Мож еще что, особо не всматривался=)