Just in case anyone runs into similar problems.
I attempted to upgrade to 2023.5.2 again. The DB was corrupted again. Went through the logs this time and there were several errors (abbreviated list below). Looks like my database was upgraded from version 35 to 41 (with every other version in between as steps).
Database is about to upgrade from schema version: 35 to: 41
Dropping index `ix_states_entity_id_last_updated_ts` from table `states`. Note: this can take several minutes on large databases and slow computers. Please be patient!
Dropping index `ix_events_context_id` from table `events`. Note: this can take several minutes on large databases and slow computers. Please be patient!
Dropping index `ix_states_context_id` from table `states`. Note: this can take several minutes on large databases and slow computers. Please be patient!
Dropping index `ix_statistics_short_term_metadata_id` from table `statistics_short_term`. Note: this can take several minutes on large databases and slow computers. Please be patient!
Adding index `ix_event_types_event_type` to table `event_types`. Note: this can take several minutes on large databases and slow computers. Please be patient!
Index ix_event_types_event_type already exists on event_types, continuing
Adding index `ix_states_meta_entity_id` to table `states_meta`. Note: this can take several minutes on large databases and slow computers. Please be patient!
Index ix_states_meta_entity_id already exists on states_meta, continuing
Unrecoverable sqlite3 database corruption detected: (sqlite3.IntegrityError) UNIQUE constraint failed: event_types.event_type [SQL: INSERT INTO event_types (event_type) VALUES (?) RETURNING event_type_id] [parameters: ('service_registered',)] (Background on this error at: https://sqlalche.me/e/20/gkpj)
Error executing query: (sqlite3.IntegrityError) UNIQUE constraint failed: event_types.event_type [SQL: INSERT INTO event_types (event_type) VALUES (?) RETURNING event_type_id] [parameters: ('service_registered',)] (Background on this error at: https://sqlalche.me/e/20/gkpj)
The system will rename the corrupt database file //config/home-assistant_v2.db to //config/home-assistant_v2.db.corrupt.2023-05-08T22:38:39.933528+00:00 in order to allow startup to proceed
I ended up following the steps from several posts (here, here, and here) on stopping HA, copying the corrupted database, running sqlite3 to repair it, and then reloading it into HA. I used the downtime to complete several updates on the system as well. Restarted HA and everything has been working since.