I am not understand your problem properly.
As per my understanding just you want to separate data model into 2 parts
1st part:-Ship Data ,Master Calendar
2nd part:-Complaints,Item Master
so just you can rename "ComplaintCreationDate" as "complaintcreationdat" in any one of the table so that the key in between Master calendar & Complaint will remove.
so that u can see 4 tables with 2 keys only
Both the Ship data and complaints are to be separated? Wouldn't you want to report on the complaints per shipment? Your current model above allows this at least by the aggregated date level, so the dates are the key to linking these 2 data-sets. If we split, this will create 2 separate data islands unless you have some other key field to link Shipment to their complaints.
As for the calculations, it depends on what date you are looking at when you are reconciliating and what is bounded by your set analysis and date selection.
Hope I make sense.