And regards to saving unwanted changes, couldn't this be solved by an option to store latest x revisions of an entry? Or to just save the state of edit in database as an entity of its own that you can review the next time you open the database?
Add option to lock KeePass with sub-dialogs are open
As an aside, why do you need to read the password? When we need to enter the password on another network-isolated machine.