Observable.fromIterable(holders) //Observable<Holder>
.concatMap(holder -> Observable.fromIterable(holder.images) //Observable<Image>
.concatMap(image -> uploadImage(image)) //Observable<Image>
.toList() //Observable<List<Image>>
.map(images -> holder)) //Observable<Holder>
.toList() //Observable<List<Holder>>
.switchMap(holders -> uploadHolders(holders))
.subscribe();
Обрати внимание, что в Rx строго рекомендуется иметь иммутабельные данные. То есть поля в твоих классах должны быть final, иначе ты очень сильно огребешь на конкурентности. Если пишешь на джаве, лучше использовать AutoValue для классов с данными.