Tl;dr
The simplest solution I can think of is to make train stops be able to have multiple names.Additionally, allow signals to control enabling/disabling names on each stop.
Why?
Because train stops heavily discourage doing anything other than "1 stop = 1 item", as explained below.Currently, train stops require this sort of setup to request multiple items to one stop:
With stops that "redirect" to another stop: or with interrupts: or with circuit signals, which requires adding combinators to every stop and "hardcoding" each stop to specify which resources it provides go to which other stops.
Put plainly, it is a pain, and a big one. Not only is it extremely hard to get into as there are a lot of behaviors to learn, but additionally every system comes with a ton of downsides for handling quality. I imagine most players would have quit before going through as much unsatisfying trial and error as I have to even discover these methods.
The first approach where I "redirect" to another stop feels like the simplest one by far, and yet it makes using the "limit train" features impossible to use.
Additionally, making a "pull" system is incredibly tedious and restrictive, because when a train is at the stop you must disable all the "redirect" stops to prevent another train arriving to pick up 2 cargos of the same resource.
Why propose multiple names as a solution? Because it is easy to understand for both new and existing players, it is easy to use yet can be used for much more complex things with the circuit option, and it supports the "train limit" feature on stops where multiple trains carrying different resources could be queued for the same stop. The downside? The "train stop priority" could only be set for all names: it would not be possible to set a different priority on each name - although in some instances this can be a positive for the player.
Why propose enabling/disabling names as a solution? To maintain the ability for a stop to communicate to trains if it wants to receive a particular item, which is crucial for "pull" systems.
What
Allow "aliases" on train stops, allowing them to have multiple names.If a train wishes to go to a stop with a particular name, all stops with that name will be candidates.
When the option "Enable/disable names" is turned on, any names that contain an icon will become disabled if the train stop is not receiving that icon as a signal from the circuit network.
For example, if the train stop has 2 aliases/names, "





If a stop name has multiple icons in it, then with this option it will be enabled if ANY of the icons appear in the circuit signal.
If a stop name has no icons in it, then it will always be enabled, even with the option.
5 aliases per stop would be needed at a minimum, but hopefully you allow many more (100 or more) for things like malls.
As a bonus (although I do not need this), you could add an option that dynamically changes train stop names via the circuit wildcard. With this option on, you would be restricted to one train stop name, but it would contain the wildcard icon in the name. The train stop would create one name for each signal it receives from the circuit network. (you don't necessarily need the "one name" restriction, perhaps you can just cull names when they reach a maximum amount like with inserter filters)
For example, if the option was on and the train stop name is "{Wildcard} Send", and the stop received 2 signals, {A} and {B}, then the train stop would have 2 names, "{A} Send" and "{B} Send".