Apology for the delay in my answer, but I was surfing.
If Udp.endPacket() hangs, it is probably because it is having trouble delivering the packet. Does it hang forever, or just for a while?
Even though the reference documentation does not specify a return value for Udp.endPacket(), it does return a value. It returns 1 if the packet was sent to the:
1) device if the destination device is localnet,
2) gateway if the destination device is not localnet,
or 0 if it wasn't sent.
Use this to determine the status of the send:
if(!Udp.endPacket()) Serial.println(F("packet send failed"));
else Serial.println(F("packet sent ok"));
The 1 return value does not indicate the packet reached its destination, just that the first device en route to the destination device took the packet.