I work with the original poster. I used the Quest Active Directory plugin to grab the relevant information out of Active Directory. Since our VMs are named based on the user name (with a 2 character prefix), I was able to determine the related user, and cross reference the organizational information from that. Finally, I created any folders that didn't already exist in the structure and moved the machines that were not in the correct folder already. First run took a couple hours for around 1600 VMs, but subsequent runs took around 5 minutes. Later, wrote a SQL query that I used from PowerShell to pull all the information from the VMware vSphere database much more quickly, and cross reference the differences via a SQL map of our Active Directory structure, and the actual data crunching was sped up significantly.
Unfortunately, I can't share the code as it is very specific to our environment, but I can confirm that it can be done with only PowerCLI and ActiveDirectory queries only.