He intentado codificar el HTML en mi API, pero luego solo muestra "<p>Hola", etc. en la celda. También probé diferentes variaciones de Html.Raw y HttpUtility.HtmlDecode en la sección de columnas del inicializador de DataTables, pero es posible que las esté usando incorrectamente. Estoy abierto a eliminar HTML con funciones de reemplazo si es necesario (aunque mantener los saltos de párrafo al menos sería ideal), pero he usado DataTables para representar manualmente las etiquetas de anclaje en la celda, por lo que no entiendo cómo esto es diferente. ¿Cómo le digo a DataTables "esto no es una cadena, es HTML y debe representarlo como tal?"
Finalmente lo descubrí. No me di cuenta de que algunos de los datos que tenía ya estaban codificados, así que tuve que decodificar los campos afectados antes de crear el JSON con ellos. Intentar decodificar en la inicialización de tablas de datos no funcionó. Utilicé HttpUtility.HtmlDecode(fieldName) en el controlador API, creé el JSON usando los elementos decodificados y luego todo funcionó como se esperaba. Espero que esto ayude a alguien algún día.