Your private LAN is preferred since it is on a potentially faster connection. In order to get Linux to prefer the other Wi-Fi, you will have to change its metric. How you change the metric may depend on which distribution of Linux you are using. Any answer I give past this will probably be flagged as a duplicate since there are other posts that answer it for various distributions. This link tells how to do it in Ubuntu.
The other part of your question is how to get certain processes to use the private "NIC. In this situation, the easiest way is for the ones that need to use the LAN to connect to devices based on IP, assuming that the programs will be connecting to hosts on that actual subnet, and not routed somewhere else public. Depending on where that is, you may have to add some static routes. Otherwise Linux will not be able to easily know which traffic needs to go out which NIC.
There is a similar answer here which discusses how to use a different NIC for different processes. This would be good in situations where the boundaries aren't very distinct.
1You do not tell your programs this. You can tell your OS to use a specific network and assign different routes to both networks, resulting in different NICs being used. But you do not select this on program level. – Hennes – 2015-04-27T13:03:26.387