Is there really a case for implementing our own cache handling for this?

As I see it if we used [`user_load_multiple()`](https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_load_multiple/7) we could leverage the entity cache. The user entities are more complex but there is also a better chance of them being loaded elsewhere and automatic invalidation of these when users are managed elsewhere in the system.