How about this: Have them fill out slips with their choices, in a ranked order. Place the slips in a hat. Draw a slip at random. That person gets their highest ranked available project. If none of the five listed are available, put it in a seperate stack. Repeat until none are left in the bag. If you have any in the second stack (If you're really lucky you won't!) Then those people get to pick for the list of remaining projects, in the order their slip was chosen. I make no claims that this is optimal, but it seems fair (at least in the aggregate) and has the advantage of being easy to do.