OQL can only be used in reports and not within your reference selectors. As you stated in order to limit your results you need to use XPATH queries.
However, reading your question over and over i don't think i understand you correctly. You have VDI N -> 1 Host and you want to select the VDI from a Host but you only want to show each VDI once? Why would the VDI have the same name if it is a different object that is coupled to a different Host? If the VDI actually are different objects then i would suggest adding a nr to the name so that you see which VDI to select.
Would it work if you created a separate entity just for the (unique) VDI name. You can then link the Name to the VDI records... ?