What you need to solve this problem is an IP (Integer Programming) formulation. Your intuition is right, this is very similar to an assignment problem -- we are essentially assigning workers to work on certain days.
Here are the steps to formulate the problem:
Decision variable: (In English) Which worker works on which days?
Let's label the days t (1..14)
And the workers w1 to w5.
So,
X_wt = 1 if worker w works on day t
X_wt = 0 otherwise
The constraints are now fairly straight forward to write down.
Each day needs exactly 3 workers.
X_1t + X_2t + X_3t + X_4t + X_5t = 3 for each t (1..14)
Each worker can work for a maximum of 9 days:
(sum over t=1..14) X_wt <= 9 for each w (1..5)
And finally, the Objective function:
Let C_wt be the cost of hiring worker w on day t. With a double summation:
Min (sum over w 1..5)(sum over t 1..14) C_wt
And in order to accommodate worker preferences for days,
you can layer on yet another set of costs, say P_wt.
That's the basic formulation. You will then need an IP/LP solver (such as CPLEX or Excel Solver or R's optim library) to get the actual solution.
Hope that helps.