Improve asserts when racing in/out fields.

Accidental in/out fields can happen if you set an initial e.g. empty array
which is send in a short UDP packet (being empty).  Later the array is filled
in - it is actually an 'output' field - but on a resend the now-full output
field is sent as an *input* field.  If the field grows large during the
transition period, it might go the 1st time as a UDP, then the 2nd time as
a TCP, confusing the asserts (and being generally useless as an input field).