Not exactly what you are asking, but org does have a built-in command to toggle a time stamp between active and inactive:
org-toggle-timestamp-type. It is not bound to anything by default but you could bind it to some available key.
I do not see a way to switch the time-stamp type that will be inserted from within the time stamp command. One thing you could do instead is create a conditional key binding that calls
org-toggle-timestamp-type only when usde right after you've inserted a time stamp.
For example, this would bind "!" to toggle the type of the time stamp right after you insert it:
(defun allow-toggle-timestamp-p ()
((eq last-command 'org-time-stamp) t)
((eq last-command 'org-toggle-timestamp-type) t)
(define-key org-mode-map "!"
`(menu-item "" org-toggle-timestamp-type
:filter ,(lambda (cmd) (if (allow-toggle-timestamp-p) cmd))))
So you could do C-c . as usual to create your time stamp, then hit ! right afterward to toggle between active and inactive. Once you do anything else (e.g. type or move point, etc) then ! goes back to just a normal key.
I split out the predicate function that decides when
! has a special meaning in case you want to try some other condition. For example, you might want to look at the content of the buffer at point and see if it looks like a time stamp, rather than checking the last command. But what I have here seems pretty close to what you described.