No, drafts never expire. Depending on the experience you want, you could handle this a few different ways.
One problem you want to avoid is that lookups and formulas aren't automatically re-calculated when a draft is loaded. So if a user selects a position pulled from a lookup, the same stale lookup results will be there when they load the draft. Also, any formulas based on current date/time won't be rerun when the draft is loaded so those will still appear valid based on when the initially saved the draft.
Some ideas for solutions:
On the process side, you could add a gateway for any removed applications and send an email back to the submitter saying this position is no longer available and just end the instance. This would allow the submission to succeed, but you'd let the user know after that the position is not available.
You could also add some JS to calculate the current date/time that runs every time the draft is loaded which could set some hidden date/time field. You could use a field rule then that, if date/time is past a certain day, hides all the form fields and shows a custom HTML message with a notice saying that position is no longer available.