I've been using PodSixNet for multiplayer since 0.99.90. Accessing private variables works, though the string problem still exists, and python's inability to access behavior variables is still a problem. I have found workarounds to deal with it though. If I need access to a behavior variable, I've just been adding it as a PV for the object, and setting the PV to the value of the behavior variable I want.
My only big complaint is that when you have a condition with python script AFTER a set of actions, the python script will run first, before the actions. This means that when an object is created, and you try to send information about it to all other players, you can't actually access the variables associated with that object until the next tick. I have yet to find a workaround for that problem that isn't a bandaid style fix. That has nothing to do with PodSixNet though.
EDIT:
Oh, I thought I'd add one more thing here. Earlier I had posted about having to run the server as an EXE. Turns out, I was able to combine the server and client into one file. When you enter the game, you have the option to be the server, or join as a client. This works well, and has allowed me to create one version of the game, rather than struggling with separate server and client programs. When I'm ready to test, I just copy the game to each computer on the network using autohotkey. Pretty neat.
Also, Lucid's PY plugin turned out to be a very handy tool for dealing with picking, and multiple instances of objects within python. Sorry, I don't have a link for it atm.