My apologies -- I did not actually intend for that to be an SSCCE. At work, I develop on an enclave, and my internet machine is a thin client. So it is not feasible for me to write a simple example that demonstrates my issue. I just included a couple of snippets to see if I am using the right approach.
However, I have actually resolved all of my issues by scrapping the custom serializers and using bind annotations on all of the fields of my classes. That worked immediately! I figured that i would give Kryo the opportunity to handle everything itself and it looks like that was the best approach. Then I registered all of the classes that are tied into the main class and a few others that Kryo wanted.
I am not sure if this is the way to get the best (or nearly best) performance, but it definitely works and I have not found any cases where there were errors. I even used deflater streams and they worked on the first try.
I can leave it as-is, and I'm getting better performance than Jackson. For something that takes Jackson 10 seconds, it takes Kryo approximately three seconds which is a nice boost. Any thoughts on what else I might do to get even better performance? Or am I getting the best bang-for-buck this way with the annotations?
Thanks again for all of your help!