1. A computing system, comprising: a plurality of datastores configured to store data on hardware devices; a virtual machine (VM) to be assigned to at least one of the plurality of datastores; and a virtual desktop management server (VDMS) running on a computing device, wherein the VDMS executes a set of operations including: determining a plurality of usage values that are associated with said plurality of datastores, the plurality of usage values include a capacity of each of said plurality of datastores; applying one or more selection penalty values to at least one datastore if said datastore has previously been assigned one or more thin-provisioned VMs, wherein a thin-provisioned VM is a VM to which storage is allocated on demand, wherein the one or more selection penalty values applied to the datastore reduce a probability that the datastore will be selected for allocation of the VM, and wherein each selection penalty value has a duration that is managed using a creation time of the one or more thin-provisioned VMs such that the selection penalty value of the datastore expires and is removed from the datastore after a pre-defined period of time; calculating a plurality of population density values for said plurality of datastores based at least in part on the plurality of usage values and the one or more selection penalty values such that each of the plurality of population density values corresponds to a separate datastore of said plurality of datastores; selecting one datastore of said plurality of datastores based at least in part on the population density value of the one datastore and assigning the VM to the selected one datastore, wherein at least one datastore having one or more thin-provisioned VMs is removed from consideration during the selecting due to application of the one or more selection penalty values; and provision said VM on the selected one datastore of said plurality of datastores.