Rework UserIdProxyModel data handling
Instead of the previous approach of figuring out the correct source index for each request,
this implementation creates a list of all user ids in the model.
This approach drastically improves the performance of each lookup and allows for better prevention
of duplicate user ids in the model.