I’m unsure what you mean about hardware emulation not being reliable.
Save states is a good point. SNES for example does not have them. Adding that stuff as an after thought is extremely tricky. Most newer cores are creating with save states in mind for two reasons. Makes debugging much easier as you can share states with testers on top of the QOL you get with that feature for end users. PSX for example has really good save state support with rotating save states.