Rewrote whitelist code for PlayerProfile

This PR fixes approximately half of issue #523. Players no longer show up as null in whitelist list, and non-existent players no longer print huge errors.
Should be private