I do not think the proposal is mature enough. It does not propose a good behavior which works with the carrier selection.
Indeed, if the Carrier Selection is changed, the prefered carrier on the Party could become invalid. Though with the design proposed, everything would work as now: the first available carrier would be selected in the Sale, hence the Party’s carrier would be ignored.
We could simply store the last carrier used for each Party (better, to each Party shipment address), to reuse it the next time if it’s still in the available carriers.
But I don’t undestand the point with the work days or holidays. If a Party prefers a Carrier service for delevering its purchases, I suppose it knows the limits and restrictions of this service.
The need to store Party’s prefered carrier is a real business case I encounter here: since the shipment cost is invoiced, the client wants to choose the carrier service for its orders. It’s not simple (and error prone) to maintain an offline (ie off-tryton) list of prefered carrier service for each party…