Turns out when I created the initial wallet, CoinSpace v3.0.7 passed a hex string to hdkey.fromMasterSeed(), which expects raw bytes. It silently parses the hex characters as UTF-8 ASCII instead of decoding them. No standard tool can reach an address created this way.
This could help anyone who created a wallet on this software around this time.
Recovery script is in the repo.
Full writeup (including the four times the AI told me it was unrecoverable, and was wrong each time): https://robmulla.substack.com/p/how-my-sons-roblox-mod-helpe...