You don’t have to set a new TXT record for every renewal indeed. I’m not sure how it’s done in the official client, but for example in the Perl client (and on ZeroSSL) if your previous verification is still valid, the process goes straight to getting the certificate, without the challenge/verification step.
300 days are currently hardcoded in the boulder code: