Depois de passar o dia nisso, a resposta é a seguinte:
O Wordpress escapa na declaração $_POST, não na inserção real, o que é bizarro.
$id = stripslashes_deep($_POST['id']); //added stripslashes_deep which removes WP escaping.
$title = stripslashes_deep($_POST['title']);
$message = stripslashes_deep($_POST['message']);
$wpdb->update('table_name', array('id'=>$id, 'title'=>$title, 'message'=>$message), array('id'=>$id));
Fazer isso significa que o WP não adicionará barras antes de quaisquer aspas.