Great post, thanks for sharing your experiences.
I really like your arguments for using Delegates for the callbacks. I am working with completion blocks at the moment and they are definitely hard to test in certain scenarios, specially when working with multithreading.
For the view and presenter layers, and the organization of tableview delegate/datasources, I recommend checking the example project of BothamUI. I learned a lot from the code organization of this example project.