the issue is Distinct is not delegatable.
so by default it is just getting the values that exist in the most recently created 500 records.
You can raise the delegation limit to up to 2,000 records, so if you do that you should get the values from all 1,500 records.
but if it gets to be more than 2,000 records you will need to design it differently.
are site and region lookups? I would create a list for region and a list for site, then add lookups to region and site on your main table.
that way you can just get the list of regions and sites from those lists, not using distinct.