Adding attributes to field_view_value
If you look at it, you'll notice MODULE_render_field is not useful at all. Once you get the renderable array from field_view_value you can change the values in it and render it. If you're adding that to a template, it will look fugly, for sure. But it belongs in a preprocess call, where it will look just normal:

&lt;?php

function MYTHEME_preprocess_SOME_TEMPLATE($vars) {
  $field_items = field_get_items('node', $vars['node'], $vars['field']['field_name']);
  $field_value = field_view_value('node', $vars['node'], $vars['field']['field_name'], $vars['field'][$delta], $display);
  // Alter the renderable array.
  $field_value['#item']['alt'] = 'alternate';
  $vars['altered_field'] = $field_value;
}


And in the template:

&lt;div class="something"&gt;
 &lt;?php print render($altered_field); ?&gt;
&lt;/div&gt;