Ok. The problem is ALL '-' characters need to be replaced with '_' in the template preprocessor, not just the ones between alias path parts. So the '-' between 'annual' and 'reports' had to be replaced also. So the for loop in my preprocessor looks like this now:
foreach ($alias as $path_part) {
if(is_numeric($path_part)){
$variables['theme_hook_suggestions'][] = $template_filename . '__%';
}
$template_filename = $template_filename . '__' . preg_replace("/-/", "_", $path_part);
$variables['theme_hook_suggestions'][] = $template_filename;
}