Hi Peter,
Does it make sense to remove the custom handler temporarily and check if the message still gets corrupted? Will help eliminate an additional Point of failure.
Also, do you mind sharing your Axis configuration screen shot? Dont mind trying this on my end and seeing what happens just as a reference point.
Regards
Bhavesh