I just tried out your approach, but it seems not working as you can see in this screenshot.
Comparison between prepend and o.message
It seems o.message does something more than simply prepending. The help file of o.message says 'o.message behaves like the standard Max message box except that it converts its data to OSC packets.' I am not very sure what this means in practice.
i'm not sure but if i remember correctly, udpsend by default is supposed to convert messages to OSC packets, so you should be able to send full OSC packets this way (you would'nt see it inside Max). But i'm not sure. It's something to test.
I just read the CNMAT compatibility tab of udpsend's help file . Do you know what 'FullPacket' message is? In what situation do we benefit from that, compared to using only Max standard objects?