There has been talk in the past about some optimizations that would
allow dynamic allocation without the interruption, but not a lot of
work done in that regard since it's pretty complicated. In
particular, the ideas I remember were building a new DSP chain in the
background, then swapping it in. The other was figuring out how to
only rebuild the parts of the DSP chain that changed.
Nova [0] and Ingen [1] figured this out. along with countless other DAWs and media engines
incidentally theyre all written in C++ rather than C, properly-threaded, use high quality 3rd party libraries throughout, and written by hackers rather than mathemusicians.
Ingen also has a notion of polyphony at multiple levels, such as plugin or subpatch, transparent to any machinations in the subpatch or plugin to fake native polyphony via preallocation and routing schemes.
or if asterisk can talk to jack, sprouting a new PD per-call seems the most plausible, in terms of using PD rather than libingen/nova (ie, not fighting for polyphony or dynamically sprouting jack ports from an existing instance)
[0] https://tim.klingt.org/nova/ [1] http://drobilla.net/software/ingen