My suggestion would be giving splitter-type entities a list of input and output zones (like pickup and insert positions on inserters). Each input zone has a list of which outputs it can dump items in, and each output zone has a setting telling it how to resolve congestion (give one input priority, take turns).
Using this schema, the standard splitter has four inputs (left to right, A, B, C, D) and four outputs (1, 2, 3, 4). A and C output to 1 and 3, B and D to 2 and 4, and in the event of congestion the priority is "A, B" for outputs 1 and 3, and "C, D" for outputs 2 and 4.
You could then have settings for inputs that tell them how to split items between their various outputs (even, output only to the highest-priority unless it's full), or outputs could have an option to only accept from alternating inputs.
A single-belt splitter (each side of the input belt going to a separate output belt) would simply have one input zone covering each side of the incoming belt, matched to an output zone 90° to that side, with priority being irrelevant.
My ideal would be to combine this with a GUI to make a smart splitter, that allows the player to select side priority and output distribution modes in-game, so you could for example set a splitter to send all items down one side and only use the other side as overflow, or set it to alternate its output between left and right input. Or to only take input from the left side when the right side is empty. Or even change operating mode depending on circuit network inventory.
Does that make sense to anyone else?