How to theme multiple entities on the same page?
After a bit more fiddling, this worked for me. I've tried a similar approach earlier, but I guess there was something wrong. I've commented out the field functions, but these are the places in case you need them.

$entities = // Array of entities keyed by id;

// Prepare all entities at once. Attach fields if desired.
//field_attach_prepare_view('entity_type', $entities, 'full');
entity_prepare_view('entity_type', $entities);

// Expose all entities individual to hook_theme.
foreach($entities as $key =&gt; $entity) {
  $entity-&gt;content = array();
  //$entity-&gt;content += field_attach_view('entity_type', $entity, 'full');
  $entity-&gt;content += array(
    '#theme'     =&gt; 'entity_type',
    '#element'   =&gt; $entity,
    '#view_mode' =&gt; 'full',
    '#language'  =&gt; LANGUAGE_NONE,
  );
  $entities[$key] = $entity-&gt;content;
}

return $entities;