Use different template than author.php for get_author_posts_url()

There is a filter called author_link. You can use that change the URL to whatever you want.

add_filter(
  'author_link', 
  function ($link, $author_id, $author_nicename) {
    var_dump($link, $author_id, $author_nicename); // debug
    return $link; // return your modified URL
  },
  1,3
);

The question does not have enough detail to allow for more specific code.

You can use the template_include hook to alter the template that loads in much the same way as the above code alters URL.

function author_archive_wpse_112852($template) {
  if (/* not sure what your conditions are */) {
    $template = get_stylesheet_directory().'/diff-author-template.php';
  }
  return $template;
}
add_filter('template_include','author_archive_wpse_112852');