DataMerge won't help you here?
Michael is right that is probably easier to do using Data Merge, as you can step and repeat multiple records onto a single page and then generate more pages as needed.
If you are looking at doing this with XML run-in, what I'd do is set up a master page that has 5 text frames (one for each row), each text frame is set up with four columns (Object > Text Frame Options). Then ensure that the images are exact size and you'd run in a sequence of images followed by paragraph text.
You'd then just run-in image and caption and won't need the photo and photos tags.
Another thing to consider is to use Live Captions, if the captions are XMP/Metadata associated with the images you could automatically get the caption text below the images.
Hoping this helps.
Data merge won't work as this is complex data that cannot be represented by a single row.
I've created the text frame like so: http://i.imgur.com/pfkypDv.png
Can you clarify what you mean by "ensure the images are the exact size" ? I previously had image frames that were sized exactly how I wanted them, with the text frame below just the same.
if I'm just running a flow of content, how would I control placement / layout?
The change you are making from your original idea is that using this workflow, you can enable Smart Text Reflow and automatically generate more pages, you won't need to tag anything but the Story frame in the InDesign template really (OK, Root > Story is enough), then map your caption tag to relevant InDesign paragraph style, and ensure that your image is wrapped in a paragraph tag that is a paragraph style that has leading set to Auto, and it should work beautifully.
so I must have missed that on the first lap around
I've got 1000+ images that will make it onto different sets of pages. Are you saying I'd have to go manually crop all of them to the exact size needed to flow?
How would this text reflow handle multline captions? Ie, some captions are only 1 line, but some are 2, and regardless each image needs to start at the top of the row.