You may want to try calling Udp.stop() or Udp.flush() at the end of the NTP function. If it is sending the first correctly but hanging after that, it sounds like a resource issue to me. I've never tried this and maybe someone can verify, can you open EthernetUdp.cpp and add some Serial.println()'s to debug and see why its hanging there?
unsigned long sendNTPpacket(IPAddress& address)
{
Serial.println("sendNTPpacket() begins!");
// set all bytes in the buffer to 0
memset(packetBuffer, 0, NTP_PACKET_SIZE);
Serial.println("memset set!");
// Initialize values needed to form NTP request
// (see URL above for details on the packets)
Serial.println("adding to packetBuffer!");
packetBuffer[0] = 0b11100011; // LI, Version, Mode
packetBuffer[1] = 0; // Stratum, or type of clock
packetBuffer[2] = 6; // Polling Interval
packetBuffer[3] = 0xEC; // Peer Clock Precision
// 8 bytes of zero for Root Delay & Root Dispersion
packetBuffer[12] = 49;
packetBuffer[13] = 0x4E;
packetBuffer[14] = 49;
packetBuffer[15] = 52;
Serial.println("packetBuffer set!");
// all NTP fields have been given values, now
// you can send a packet requesting a timestamp:
Udp.beginPacket(address, 123); //NTP requests are to port 123
Serial.println("beginPacket set!");
Udp.write(packetBuffer,NTP_PACKET_SIZE);
Serial.println("write set!");
Serial.print("NTP_PACKET_SIZE: ");
Serial.println(NTP_PACKET_SIZE);
Udp.endPacket(); // << Code hangs here when I try to send a second tweet
Serial.println("packet ended!");
Serial.println("sendNTPpacket() ENDING!");
Serial.println("");
Udp.flush();
Serial.println("Flush out Udp instance";
}