Using ConstructObject to create a component dynamically

This question contained the answer for me, using the following code works:

RelevantInputComponent = NewNamedObject<UInputComponent>(GetOwner(), InputComponentName);

Presumably you still have to call things like RegsiterComponent etc as described in the original forum post to get the full behaviour.