I know what is a problem with your new implementation. I got the same problem myself.
Validate plugin can not validate elements with css display: none. And for this plugin to work original select must be hidden below the custom one.
Here's an example I made to demonstrate this:
http://jsfiddle.net/Gajotres/64aKZ/
You should comment/uncomment this css bloc to se the difference:
#select_list {
display: block !important;
}
Now from what I could see this plugin was not created to cover the old select box (no matter if original display was block or none). If you don't mind take a look at a plugin I am suing. It will cover old select box even if its display is set to block:
http://jamielottering.github.com/DropKick/
EDIT :
There's another solution. You will need to play with css. Set this to select box:
#select_list {
display: block !important;
visibility: hidden;
}
Now you will need to cover old select box with new one, or at least float new one to the left.