How do I add variables to a module's hook's existing render array and have them available as template variables?
According to template_preprocess_search_result you have the $result variable available, so if you've already injected your custom field into the result you can just use

print $result['photo'];


In the template file.

Or if you're absolutely set on just having a $photo var, you need to add it to the variables for the template:

function MYMODULE_preprocess_search_result(&amp;$vars) {
  $vars['photo'] = $vars['result']['photo'];
}