Okay, you have two conflicting criteria: Spreading load and minimizing VM movements:
Algorithm A: Always choose the server with the most slots free spreads the load most equally without moving VM's.
(Assuming servers are equal in capacity. Minimizing load-balance is defined as minimizing the difference between highest loaded server and lowest loaded server.)
Proof: Given a VM to be placed, v, and a set of servers S of which server s' is has most slots free.
Say picking s' to place v does not give the most optimal load-balance. Then there must be server with with more slots free then s', contradiction.
Algorithm B: Let S be a series of servers ordered by load (lowest number of free slots first). Put a new VM v on the first server s, on which v fits. This maximizes the initial number of VM's you can place without moving VM's, without prior knowledge.
Proof: Because we always try to fit each VM in the first server possible, we maximize the amount of consecutive space on the last server. Thus, without prior knowledge, this maximizes the number of VM's we can place.
I take it you like neither of these solutions. You want to compromise between the two solutions. Doing that right (there is not optimal in that sense) would depend on the scale difference between servers slots and space required by VM's. If VM's are small and servers big, you can safely go for load balance. If VM's are big and servers relatively small, you may go for B.