In the file /CRM/Core/BAO/WordReplacement.php you've got this delightful stanza:
// So. Weird. Some bizarre/probably-broken multi-lingual thing where
// data isn't really stored in civicrm_word_replacements. Probably
// shouldn't exist.
$stringOverride = self::_getLocaleCustomStrings($id);
$stringOverride[$config->lcMessages] = $overrides;
And digging in, you'll see it does this:
$domain = CRM_Core_DAO::executeQuery('SELECT locale_custom_strings FROM civicrm_domain WHERE id = %1', [
1 => [$domainId, 'Integer'],
In other words, it's pulling word replacement information from a field in the civicrm_domain file which is no longer accessible or used in the UI.
I looked in there and sure enough, I had an old collection of translations. By setting the field to empty, it solved the problem.