Okay, after researching these options, I figured out what caused the issue. Ultimately, inheritance and having both attributes, serializable and DataContract, in the data being exchanged did not make a difference with deserializing the response.
The real meat of the issue was in my configuration. Earlier I was playing with Streaming messages. I left my host transferMode set to Streaming and my client was set to Buffered. In silverlight, that's my only option. So the serialization problem happened because the message was being chunked. I noticed this after tracing a few calls.
So easy peasy fix. Switch transferMode to Buffered. I'm going to setup a separate endpoint for streaming and play with that another time. I don't need to stream the CRUD services.
Thanks for everyone's input.
-Nathan