I do not think that he should overwrite vcl_hash. By default Varnish caches by the request host and not the backend host?
Here is the default:
sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); }