I had this problem as well. I ended up solving it by importing MD5 passwords as plaintext, and then changing Wordpress authentication to put the passwords through an MD5 hash before checking them.
My specific approach:
I used a plug-in to import users from a CSV which included their MD5-ed password. This left me with a database full of users unable to login, because their plaintext password was now "5f4dcc3b5aa765d61d8327deb882cf99" instead of "password".
Next, I wrote a plug-in that included tiny changes to wp_hash_password() and wp_check_password() to cause MD5 hashing to be the first step of all password checks. So, when they enter "password", WordPress checks against "5f4dcc3b5aa765d61d8327deb882cf99" instead, and so the authentication check succeeds. I still get the same phpass encryption, the only difference is that I'm never giving it raw plaintext to encrypt.
This was accomplished by copy-and-pasting these functions from pluggable.php into a new plug-in and modifying them to wrap the provided plaintext passwords in md5().
Each function had only one change from the original implementation; this line from function wp_hash_password():
return $wp_hasher->HashPassword( trim( $password ) );
return $wp_hasher->HashPassword( md5 ( trim( $password ) ) );
and this line from function wp_check_password():
$check = $wp_hasher->CheckPassword($password, $hash);
$check = $wp_hasher->CheckPassword(md5($password), $hash);
With this approach, users get to transparently keep their passwords, and instead of compromising on security, we get to use an ever-so-slightly more secure version of the out-of-the-box authentication scheme.