Use a more sophisticated implementation of the slot selection algorithm.  Add interval utilities to allow snapping intervals to begin and end at half-hour marks, then randomly select a date and then a start time at half-hour increments within a valid interval.