What is the right way to restart bitcoind if it crashes?
If you check in your debug.log you should be able to see if there is any error when you started the node. Probably when the node shutdown uncleanly some of the tables were in an inconsistent state.

Presuming everything is fine and it is not stuck, it is okay to just start with bitcoind -daemon and it will do what it needs to.