Я бы создал массив, а затем добавил его один раз к элементу. Я подозреваю, что это так медленно, потому что для каждого дополнения вы должны обновлять DOM, так что вы будете обновлять DOM только 3 раза.
var dates = [];
$.each(data.VacationEvents, function (index, value) {
dates.push('<p>' + value.Date + '</p>');
});
$("#vacationDates").append(dates.join(''));
Также, если вы создадите двумерный массив, вы можете сохранить фактическую дату, а также текст, а затем, если вы также будете хранить ссылку на массив дат, вы сможете легко разрешить пользователю сортировать по дате на клиенте. сторона.