Hrm. Seems I didn't fix the whole thing: There was a bit of a hack in civicrm/drupal/modules/views/civicrm.views.inc which must have been motivated by the aforementioned bug.
Starting at line 5059:
function civicrm_views_custom_data_cache($data, $entity_type, $groupID, $subType, $style) {
//Feels a bit hacky this next 10 lines but it was the only way I could get getTree to play nice with the data
$config =& CRM_Core_Config::singleton( );
if ($style == 'Inline') {
$tree = CRM_Core_BAO_CustomGroup::getTree( $entity_type, CRM_Core_DAO::$_nullObject, null, null, $subType, null );
}
else {
$tree = CRM_Core_BAO_CustomGroup::getTree( $entity_type, CRM_Core_DAO::$_nullObject, null, $groupID);
}
I believe should now just be:
function civicrm_views_custom_data_cache($data, $entity_type, $groupID, $subType, $style) {
$config =& CRM_Core_Config::singleton( );
$tree = CRM_Core_BAO_CustomGroup::getTree( $entity_type, CRM_Core_DAO::$_nullObject, null, $groupID, $subType, null );
Thus $tree then just contains the necessary information for the particular group of custom fields in this iteration of the loop calling civicrm_views_custom_data_cache earlier in the file.
Now I think I can go to bed.