Earlier quoted context omitted.
Paredit does try and keep the subtree you're editing correctly indented. Moreover, it has a paredit-reindent-defun command (bound to M-q), which reindents the whole tree you're editing. Bind it to whatever auto-reindent facility Emacs has (Electric keys? I don't know - I never had a need to configure it for myself.), and there you go. Personally, I'm fine with manual M-q on code if I see the identation got messed up.
M-q is useful, but something more useful IMO would be the same feature but one that removes unneeded white space within the sexpr between expressions and keep everything indented. A contrived example: (defun x () (+ x x)) => (defun x () (+ x x))
That would not be a good default because some people, like me, like to align their code in columns (for example, things like let clauses).
What I would like to see come as an Emacs default is just-one-space working on regions with the behavior you describe.