Turns out the problem was indeed all the escape characters present in the raw data string, as suspected.
Solved that by Base64-encoding the entire string before creating the XML CData-sections.
Rad Studio methods: EncodeBase64, DecodeBase64
Header: Soap.EncdDecd.hpp