The `expiration` tag is defined in a NIP but not often exposed or used in clients. Corny Chat leverages it under the hood as well as replaceable notes before doing deletes because not all relays honor deletes, and blastr can excacerbate. If a note is expired, relays should not return it, so im not sure this fully addresses your desired use case