Bugfix: submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock

Fixes #5083 (based on #5105)
Can we get some contract from ProcessBlock (in the form of a comment) that indicates that it will fully process every dependent block before returning (ie not push work to a background thread?)