With proper route rules(which is how you do network level split tunnels), the split is done based on the destination of the traffic, not the source(well, generally speaking- in a more complicated setup, you can do it based on the source at the router level, but as you note, is not what you want). It might look like the source for a rule that encompasses all traffic, but it actually is capturing all traffic regardless of the destination (as opposed to only specific traffic based on the destination, but again, it’s not related to the source).
Typically, in a split tunnel, you have a route rule that in plain english says “for traffic going to this destination, use this gateway”. When you have a VPN enabled, you effectively have another gateway that your device can use(a gateway being the place that network traffic is sent when it has to go to something not local to the sender).
So you create a rule that encompasses the desired destination, and sends it over the VPN connection. For other traffic, your default rules would continue to send it over the normal connection.
You can also do the reverse, that is, default all your traffic to the VPN, but use route rules to grant exceptions to the VPN.
Unfortunately, for particular applications that don’t have a fixed and/or known set of destinations, this way of handling traffic can be problematic. For instance, if you wanted say, only Firefox to use the VPN, but not Chrome, you can’t really do that.
A more concrete example: let’s say you want to use the VPN when doing DNS lookups using Google’s DNS. In that case, you create a route entry for 8.8.8.8 that always directs that traffic over the VPN connection. This also illustrates a key difference with route rule based split tunnels. It’s based on the destination- that means just putting a route rule in catches all traffic, which includes DNS. Now, the problem is, lets say you need to use a web browser to connect to 8.8.8.8, but you don’t want to use the VPN. Unfortunately, you are stuck- because this is happening at the network level, you can’t dictate which applications (in this example, DNS lookups vs a browser) use the rule and which don’t.
The takeaway here is that, for the things you want to have go over the VPN, as long as you can define the situation as either “Just these addresses/addresses are the ones you are interested in”, you can manage it. So random addresses you don’t know before hand, or huge swaths of addresses aren’t going to work or may not be practical. In the huge swaths case, it might work doing what I said where you default all traffic over the VPN _except_ certain things.