you can send messages to [pd $0-foo] subpatches using (this syntax requires a recent pd version...)
you can create objects like this. just remember to do: "; pd dsp 0" before you send messages that create signal objects and/or connect them and "; pd dsp 1" after you've finished. the syntax is just like .pd files, when pd patches are loaded messages are sent to #X (iirc)
or: write a program in another language that generates a Pd patch, the file format is quite simple, and it might work out less pain than trying to build such a program in pd.
search this forum or pd-list for "dynamic patching" or "internal messages" or similar, there's plenty of info
maybe also [dyn~] might be useful, but i've never used it, got a feeling it's more for dynamic polyphony than static stuff like that.
the "pure pd" way without dynamic patching would be something like:
make a patch (abstraction) with your pitch offset oscillator
make a patch (abstraction) with 10 of the above
make a patch (abstraction) with 10 of the above
use the above when you want 100 pitch offset oscillators