another error:
(Errno::ECONNREFUSED)
That one means the script couldn't connect to your wallet via RPC. Check that the daemon is running with: -rpcpassword=some-password -rpcport=8332
1: I encrypted the wallet on a live ubuntu CD. Is there any difference in encoding?
I'm not sure. I suggest you test it with your exact setup. Create a new wallet with a short password, copy it onto the new system, and try the brute force script with a typo in the password. That will verify that everything is working correctly.
2: Is there any faster way to check the key, besides submitting a message to bitcoind? I am currently doing about 3-4 guesses per second which isn't cutting it so far
Bitcoin stretches the keys to about 0.1 seconds on the CPU where you create your wallet. 4 per second suggests you might be cracking on a slower CPU than the one where your wallet came from.
Submitting to bitcoind is pretty fast. Any of the RPC scripts should keep bitcoind at 99% CPU. Bitcoind itself is using OpenSSL which is also pretty fast. There's not much to optimize there.
Bitcoind only uses a single CPU. A multithreaded version would be several times faster.
GPUs would have less performance gain than mining, but they would help. You'll need someone with experience programming GPUs. I do not.
The best case for optimizing the number crunching is we could speed things up a few hundred times. You will get MUCH bigger gains by targeting the search better. It's easy to get literally a trillion-times speedup by narrowing the search criteria, so that's where I focus most of my time.