text: Title: Creating selectors is expensive in EndpointsController
  Body: When profiling scalability tests at large scale, it appears that the function ``` SelectorFromValidatedSet``` can consume even 10% of cpu.
  In the profiles it's coming purely from the GetPodServices in EndpointsController.
  
  The reason for that is for every single call of GetPodServices:
  https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/endpoint/endpoints_controller.go#L170
  for every single service in that namespace we build the selector from scratch:
  https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/client-go/listers/core/v1/service_expansion.go#L49
  
  Even though a single such operation is not very expensive, the amount of that is resulting in significant percentage of overall cpu usage.
  
  
  Longer-term solution is to do exactly what was done e.g. for ReplicaSet:
  https://github.com/kubernetes/api/blob/master/apps/v1/types.go#L723
   - use appropriate type for the selector once we create v2 Service API.
  
  That would mean that store-in-memory services would have the selector already created, so it would eliminate that completely.
  
  I'm wondering if there is something we can do here more short-term.
  
  @kubernetes/sig-network-misc @freehan 
  @kubernetes/sig-scalability-misc 
  