I noticed that signet and testnet both use
tb1 addresses. Why doesn't signet use a unique prefix that distinguishes it from testnet?
It used to, but we switched to using the testnet one to simplify things. It's a testnet so it doesn't really impact anyone if you screw it up (go to the faucet and get more if you lose them), and using the same prefix seemed like it would simplify things.
(In hindsight, though, I feel like this decision was a mistake and actually made things needlessly complicated, because a lot of software (e.g. the rust stack) uses a "prefix to/from network" dictionary setup, which doesn't work well with duplicates.)