The error is that text-before-node-creation apparently is a nil and the insert routine is generating an error because of it. This variable is set earlier in the handler at around line 845 but only if the text being inserted does not look like an org-outline-regexp:
(unless (looking-at org-outline-regexp) ;; add a headline (setq text-before-node-creation (buffer-string))
Because my template actually does look like an org-outline-regexp (it starts with "* TODO"), that variable is never set and because the buffer is not in org-mode, this code is triggered using the text-buffer-node-creation.
The simple work around was to add .todo files to the auto-mode-alist (or I could have changed the template), but I thought I would post a note about the problem.