Bi,
I'd strongly suggest to think again to your system. In particular the headers and packet format.
It is true that LTE can't forward non-IP packets. However, I wonder how a non-IP packet could be exchanged from a node to another. Perhaps the UE could send it to the PGW, as there's only one default PGW for each UE. However, the opposite isn't true !
As a consequence, the fact that your packets didn't had an IP header means that there's a problem in your design. Go back to the starting point.
About where and how the IP layer is added, it's added by the IP layer, not by UDP. You use (as an example) an Ipv4RawSocket to have "just" the IP header.
However (and again, your design may be flawed), you'll need a socket to receive the data. Using a RAW socket isn't that simple.
As a consequence, I see mainly design issues in your approach. Fix the design, then the development will follow.
About placing a UdpSocket in a NetDevice... I'd definitely avoid it, it would create a circular dependency between modules. It could be done, but it's not something that easy.
Cheers,
T.