Make posts 410 dynamically

Just did some testing and seems there is a bug here.

Newly created draft posts are not accessible on front-end. Search bot (or anyone else not logged in and using special preview URL) gets 404 error on them.

But if you publish and change back to draft then post remains available by direct link (does get removed from index).

For this reason I would stay away from using draft for this purpose. I would try to use custom field to mark post as expired and filter the_content to show informational message and set headers with status_header() function.