Temporary accounts should become unusable after a set period of time, but we mostly don't have the means to indicate this about an account to another user. There are various scenarios in which it would be useful (trying to message them, trying to block them etc.) This is, in many ways, the same use case as being aware that an account you are about to interact with is blocked and can't respond; and conceptually, temp account expiry isn't very different from an indefinite block.
We could make use of this and represent temp account expiration with system blocks. That would communicate the status of expired accounts clearly without having to duplicate code for displaying such messages, and would also mostly enforce the account expiration if something went wrong with the expire script. (Fully enforce it, if done on top of T359060: BlockDisablesLogin should be a block flag.) It would mean an extra DB lookup per block (to check the central account registration date) which doesn't seem like a big deal when properly cached.
