I forced them to be displayed with this code:
add_action( 'woocommerce_email_order_details', 'uprise_hook_data_into_email', 10, 3 );
function uprise_hook_data_into_email( $order, $sent_to_admin, $plain_text ) {
$order_type = get_post_meta( $order->get_id(), 'thwdtp_order_type', true );
$delivery_datepicker = get_post_meta( $order->get_id(), 'thwdtp_delivery_datepicker', true );
$delivery_time = get_post_meta( $order->get_id(), 'thwdtp_delivery_time', true );
echo '<p><strong>' . __( 'Type:', 'uprise' ) . '</strong> ' . $order_type . '</p>';
echo '<p><strong>' . __( 'Date:', 'uprise' ) . '</strong> ' . $delivery_datepicker . '</p>';
echo '<p><strong>' . __( 'Time:', 'uprise' ) . '</strong> ' . $delivery_time . '</p>';
}
and it works 100% of the time.
I even have an example where your insertion does not appear in the email, but mine does, so my best guess is that the insertion does not happen always because the fields do not get saved/read properly before sending the email; it might just be a priority issue.
Sadly I can’t offer a staging access or website access as this occured only in a production environment, but I hope that my above function helps you solve this (or anyone else that has issues with this).