How can I set up CiviMember to meet these requirements?
I would go for all different membership types.

And on the signup page to describe properly for who it is.

The problem with pricesets is that it is much more difficult to get priceset info to show up in searches, in exports, in reports, in batch imports. So if you would do all (or a few) with the same membership types, you often only see the paid price difference, and not the underlying reason why they paid differently. You obviously can guess, but often you would want to see the reason (different option chosen in the priceset).