Hi Lee,
I think you’ve made it quite complicated for yourself by using multiple start dates. A suggestion to solve this is to create an enitity associated with your main object called ‘StartDate’ or something like that, which has two attributes: StartDate and _Type, where Type is your type of start date, being an enumeration. In this way you have 1) more control on what start dates are present on your main object, 2) have a less complicated domain model and 3) have objects where all relevant data is filled, i.e. you don't have objects where 4 out of 6 start dates are empty, for example.
In this way you can specify in your XPath retrieve of your main object based on your start date of choice, or just from all start dates.
Hope this helps!