The size limit makes a lot of sense for the server, as it never has to accept very large data and has to protect against malicious clients.
The client, however, can request arbitrary amounts of data (for example with listtransactions on a large wallet). Having a strict size limit makes little sense.
Fixes #4604.
The second commit contains a slight optimization that prevents a redundent copy and removes a needless c_str which would mess with binary data.