I have done some reading and reworking (and it led me to the same thing you just said, the name should be 'Udp'), and I think I'm closer to my goal. I have new errors! 
It seems that the proper way to call this is:
void send_reply(uint8_t mode_broadcast, uint8_t *packet, uint16_t size)
{
if(mode_broadcast == 1) // send broadcast packet
{
//Udp.beginPacket(ArtNode.remoteIp, ArtNode.remotePort); //I commented these out while I was observing error messages
Udp.write(packet, size, ArtNode.broadcastIp, ArtNode.remotePort);
//Udp.endPacket(); //but as I understand it they should sandwich the 'write'
}
else // send unicast packet to controller
{
//Udp.beginPacket(ArtNode.remoteIp, ArtNode.remotePort);
Udp.write(packet, size, ArtNode.remoteIp, ArtNode.remotePort);
//Udp.endPacket();
}
}
So now it seems that the original arguments aren't quite correct; here are the new errors.
/Users/Newlin/Downloads/artnet/artnet_node/artnet_node.ino: In function 'void send_reply(uint8_t, uint8_t*, uint16_t)':
artnet_node:396:68: error: no matching function for call to 'EthernetUDP::write(uint8_t*&, uint16_t&, uint8_t [4], uint16_t&)'
Udp.write(packet, size, ArtNode.broadcastIp, ArtNode.remotePort);
^
In file included from /Users/Newlin/Downloads/artnet/artnet_node/artnet_node.ino:34:0:
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:181:17: note: candidate: virtual size_t EthernetUDP::write(uint8_t)
virtual size_t write(uint8_t);
^
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:181:17: note: candidate expects 1 argument, 4 provided
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:183:17: note: candidate: virtual size_t EthernetUDP::write(const uint8_t*, size_t)
virtual size_t write(const uint8_t *buffer, size_t size);
^
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:183:17: note: candidate expects 2 arguments, 4 provided
In file included from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:232,
from /var/folders/pn/7t4ckm_9505c1pv7sx_2llx40000gn/T/arduino_build_799392/sketch/artnet_node.ino.cpp:1:
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:57:12: note: candidate: size_t Print::write(const char*, size_t)
size_t write(const char *buffer, size_t size) {
^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:57:12: note: candidate expects 2 arguments, 4 provided
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:52:12: note: candidate: size_t Print::write(const char*)
size_t write(const char *str) {
^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:52:12: note: candidate expects 1 argument, 4 provided
artnet_node:402:65: error: no matching function for call to 'EthernetUDP::write(uint8_t*&, uint16_t&, uint8_t [4], uint16_t&)'
Udp.write(packet, size, ArtNode.remoteIp, ArtNode.remotePort);
^
In file included from /Users/Newlin/Downloads/artnet/artnet_node/artnet_node.ino:34:0:
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:181:17: note: candidate: virtual size_t EthernetUDP::write(uint8_t)
virtual size_t write(uint8_t);
^
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:181:17: note: candidate expects 1 argument, 4 provided
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:183:17: note: candidate: virtual size_t EthernetUDP::write(const uint8_t*, size_t)
virtual size_t write(const uint8_t *buffer, size_t size);
^
/Applications/Arduino.app/Contents/Java/libraries/Ethernet/src/Ethernet.h:183:17: note: candidate expects 2 arguments, 4 provided
In file included from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:232,
from /var/folders/pn/7t4ckm_9505c1pv7sx_2llx40000gn/T/arduino_build_799392/sketch/artnet_node.ino.cpp:1:
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:57:12: note: candidate: size_t Print::write(const char*, size_t)
size_t write(const char *buffer, size_t size) {
^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:57:12: note: candidate expects 2 arguments, 4 provided
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:52:12: note: candidate: size_t Print::write(const char*)
size_t write(const char *str) {
^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:52:12: note: candidate expects 1 argument, 4 provided
Using library SPI at version 1.0 in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SPI
Using library Ethernet at version 2.0.0 in folder: /Applications/Arduino.app/Contents/Java/libraries/Ethernet
Using library Dmx in folder: /Users/Newlin/Documents/Arduino/libraries/Dmx (legacy)
Using library LiquidCrystal at version 1.0.7 in folder: /Applications/Arduino.app/Contents/Java/libraries/LiquidCrystal
exit status 1
no matching function for call to 'EthernetUDP::write(uint8_t*&, uint16_t&, uint8_t [4], uint16_t&)'