OK I eventually worked around this problem by adding the secure tag at
the point the message is being sent. The code now looks something like this:
(add-hook 'message-setup-hook
(lambda ()
(gnus-alias-determine-identity)
(define-key message-mode-map (kbd "C-c f")
'gnus-alias-select-identity)
(flyspell-mode)))
(add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime)