Why is my theme's block preprocess function not reordering elements?
I figured this out. Drupal can be so infuriating when you are new to it.

The rendering of the search_form_block was happening in a template function file:

bootstrap-search-form-wrapper.func.php. 

containing:

function bootstrap_bootstrap_search_form_wrapper($variables)

The function customizes the rendering of the search form by calling out elements specifically - thus ignoring '#weight'; the wrapper function is part of the bootstrap theme.

The solution is to overwrite the bootstrap theme function with a similar function in our child theme: function mytheme_bootstrap_search_form_wrapper($variables)

o.O

Hopefully this helps someone.