Odd behaviour on form validation when in block mode
Taking a bit of a stab in the dark here, but I'm suspicious of this comment in your linked code right above hook_block_view():

// used in node--landing-page.tpl.php


That suggests that you're calling this block in directly from a template file, not through the normal block system, which won't work properly.

The problem is that the template files are built too late in the page build, in this case after the system messages have already been taken from the session and cleared out for the next page. So the validation messages do get added to the messages array in the session, but they won't be outputted until the next page is loaded.

I would suggest instead implementing hook_node_view() and adding your block into the content there. That hook is run early enough on in the page build that you won't see the delay with error messages.