Kryo can do delta compression. Don't think anyone has used it for a game though. The heart of it is this class:https://code.google.com/p/kryo/source/browse/trunk/src/com/esotericsoftware/kryo/compress/Delta.java
Basically you use it like this:
delta = new Delta(2048, 8);
delta.compress(remoteData, latestData, deltaData);
delta.decompress(localData, deltaData, newLocalData);
You can grab the Delta class and use it like above outside of Kryo. It uses ByteBuffers though. You could just use ByteBuffer.wrap(byte) or modify it to use byte directly.
If you split UDP packets and the split packets are not useful unless both are received, you increase the damage done by pack loss, since if any of the split packets are not received it is as if none were received. For each split packet you'll need to encode the order in the sequence of split packets it is, and whether it is the last packet in the sequence.
IMO it would be better to get something working using TCP first, or at least don't worry about packet splitting until you have something working in UDP.