Kev,
Great questions, I'm not sure why you're not able to gain CVS access (I haven't had any problems - well, I guess that's obvious or I wouldn't have been able to upload it) but I'm happy to give some explanation as well as the source code if you'd like me to post it somewhere?
In response to your questions:
1) Essentially yes, I am spitting UDP messages back and forth and I have several message types that can be sent back and forth: SynchronizationMessage, PhysicsMessage, JoinRequestMessage, JoinResponseMessage, StatusRequestMessage, StatusResponseMessage, ChatMessage, and DisconnectMessage.
The main mentionables in this are SynchronizationMessage and PhysicsMessage. The SynchronizationMessage synchronizes a physics object's location, position, and rotation, and the PhysicsMessage synchronizes the physics state that the object is currently in (like what forces are currently acting on it, and in what directions, etc.). The other messages are relatively self-explanatory.
2) No, this is not a locking system, this is why the server runs a copy of the ODE physics world as well so that things can operate real-time and synchronization events are passed up to the clients from the server to keep them synchronized, but the clients can continue to execute without those messages they just further become out of sync.
3) This is the part I'm still trying to work out actually. I am trying to find some time to do the testing for high pings and handling the situation without their universe being choppy around them and what they're actually seeing is the past, not the present, but this may be something I need someone with more knowledge about this than I do help with. Such is the benefit of having this project approved.

The purpose of this API is to be able to be able to be utilized in ANY games that utilize OdeJava's physics wrapper. I am trying to avoid making this specifically geared towards any style of game and focusing on best-practices of providing a standard physics synchronization system.
Matt Hicks