Thanks Steven, nice suggestions. I should have mentioned that the deployment setup is on RDS on PG 11.x, which rules out those extensions. I've looked at TimescaleDB several times, and it looks pretty great.
I've now read through some of the archives from years back when pg_xact_commit_timestamp was still in development, and I'm thinking it might be the right solution. I'm still not clear how long timestamps are held, or what the overhead is. It sounds like commit timestamps might be exactly the same, but that's fine for me. So long as they're never in the past, it doesn't matter how many timestamps are the same.