I second the DateRange datatype suggestion
As for Overlap(), and to further generalise, I think the formula language could benefit from a general Intersect(A,B,C,…) function that returns a list containing all the elements (numbers, text etc) that are common to all lists A,B,C,…
This function could then be extended to also handle the DateRange type which you suggest , such that Intersect(DateRange1, DateRange2, DateRange3,…) would returns a list of DateRange datatypes where representing the periods of overlap.