It was actually very straight forward - As each subreport was in it's own band, simply setting the band's split type to "Prevent" ensures that it will move the whole sub-report onto a new page to start (but will split if the subreport is too long for a page). If you want the subreport to allow a certain height before it'll split, then set the split type to "Stretch" and set the band height to this minimum, which needs to be bigger than the title. That way it will show the title only when it gets the title plus something else on the page, otherwise it puts the page break before the band.
I realised the way to do this was to have many subreports with each sub-report in its own band so the band will expand to show all data from the subreport.