I'd promised myself not to answer any more questions this morning, but then you posted.
My workaround for this to first-thing create a calculated field in the secondary that returns the secondary's date field, and give the calc the same name as the field in the primary, then Tableau will automatically generate all the relationships. So in your case in the Sales Data, you'd create a "Shift Start" field with the formula [DateTime].
I don't know why Tableau requires all the relationships to be explicitly defined, my only guess is that dates aren't just one dimension, they encompass a lot of aggregations and the Tableau developers didn't want to hide that and remove some functionality for some use cases, like where you'd want to do a self-join of monthly data to annual results, which was apparently a lot more necessary in the days before custom table calcs.
Yep, great answer - it actually prompted me to do a lot of renaming so that it was picked up automatically.