IT WORKS !!
I now have a fully working MJPEG receiver, running at 25 FPS, coded in B4A with no custom Java library.
I have written several stream receivers in Java, but the only way to do it in B4A seems to be to have the data receiver in a service, with the parsing code in an activity/class. I don't know why this happens, but unless you do this you get lots of non specific memory errors, as the title of my post suggests it was all down to the code architecture. The memory errors only surface if your data receiver is running continuously for more than a minute or so (same code as earlier in this thread), put the same code in a service and no issues at all.
Here's it running (test app)
This means we can go ahead and release our Android CCTV client to replace the old one.
A very relived
Huw