drupal_alter() ignores more complex function names when the hook is called
It's intentional - a module should only be able to implement a single hook once, and the naming convention requires that the function be called modulename_hookname_alter(). Drupal isn't ignoring your more-verbose function name, but since it doesn't match the name of the hook, it's never going to call it.

You can create other hooks though, based on whatever makes sense to your use case. For example if your module had a bunch of contexts you might create hook_abc_CONTEXT_alter(), and invoke it like so

foreach (mymodule_contexts() as $context_name) {
  $hook_name = 'abc_' . $context_name;
  drupal_alter($hook_name, $ref, $arg1, $arg2);
}


But I think that's as close as Drupal core will let you get to the pattern you're trying to implement.