MouseDown/MouseMoveで自前でDoDragDropを呼ばないと巧くいかないようだよ。
デフォルトでもドラッグ動作が動くように見えるんだが、どうにも微妙。

簡単には、
・MouseDownでマウス位置保存
・MouseMoveで、MouseDownからの移動量がSystemInformation.DragSize以上になったらDoDragDrop呼び出し。
 データ形式に独自の形式を使うと便利。
・DragDropで、自分からのドロップの場合、元々選択していた文字列を削除して、新しく張り付け。