> is there a set of send / receive objects that communicate only
> inside a patcher

This is something of a FAQ. There’s a semi-hack to use generated
local symbols with "#0" as a prefix; this will be expanded into a
unique symbol for the patcher (and any immediate sub-patchers
embedded using [p xxx]. So you can use [send #0_postfix] and [receive
#0_postfix] and they’ll be patcher-local.

And there is a very well-documented example of the #0- technique in the
Vocoder example patch. Worth reading. As are the other examples and
tutorials.

Also, you can adapt the technique to use an explicit #digit argument if
you want to allow several instantiations of an abstraction to share
data, but have another group of instantations sharing a different group
of data, and so on.