I wouldnt rule out the passwords just yet, but I would set the expectations that is probably not going to happen. You should explain why it can't happen (although the customer probably wont get what your saying they will feel more secure in your knowledge.)
So... back to your question. You could use import-csv and foreach(){} to create the users for you. The CSV file needs headers.
I think in your case the best option would be to dynamically create the hash table that contains all the properties, but I would have to test this... im thinking something like this. THIS IS NOT WORKING CODE! Just a suggestion on direction.
foreach($user in $users)
{
$props = $user | Get-Member -MemberType properties | %{$_.name}
foreach($prop in $props)
{
$myprops.$prop = $user.$prop
}
new-qaduser ... -objectattributes $myprops
}