It is possible, E.G. by using the built-in "Shortcut is invoked when pressed twice (double tap)" and "Invoke also on single press (Advanced)" options, and handling the hold functionality within the command itself:
Set date [~holdTimeout] to [~holdTimeout] plus [400] milliseconds
Begin Text Compare : [{CMDDOUBLETAPINVOKED}] Equals '0'
Start Loop While : Keyboard Key 'Ctrl' Is Pressed
Begin Date Compare : [~holdTimeout] Is Before Current Date/Time
Write [Blue] 'Hold' to log
End Condition - Exit when condition met
End Loop
Write [Blue] 'Press' to log
Else
Write [Blue] 'Double tap' to log
End Condition
Note that the value of ~holdTimeout would be in addition to the value you have set for the "Keyboard shortcut double tap threshold (ms)" option on the "Hotkeys" tab of the VoiceAttack options window (default is 300, so in this example, holding down the key for ~700ms would signify a hold)
The above should be "cleaner" than the alternative of using the built-in "Shortcut is invoked when long-pressed" and "Invoke also on short/standard press (Advanced)" options and implementing double-tapping within the command (or doing everything within the command without any built-in options), as it does not require any non command-scoped variables.