Michael,
welcome to the forum! Thank you for sharing your interesting thoughts. I am not far from a release at present, so significant changes will have to wait until the next release now, although I should add that the changes from the last release should reduce the tendency to overcrowding that you notice, which might well at least partly solve the issue with hub stations in any event.
The assignment of workers to jobs is a difficult area: I am not sure whether or not having different types of workers and jobs will be a viable solution (I shall have to consider that along with other things in greater detail), but what we probably do need if possible (and I am still not sure whether this is possible) is a lasting affinity between a particular household and a particular workplace so as to give rise to established patterns of commuting, which in reality have a substantial effect on transport planning: the Thameslink project in London, for example, which aims to increase capacity on the North-South link through central London initially planned to change services from Wimbledon from going through the centre to all terminating at Blackfriars in the Southern part of central London, albeit with more trains from a greater variety of destinations still going through the central section. This plan had to be revised after strong opposition from people who had bought houses along the route specifically because it gave them a direct commute to places North of Blackfriars. How best to establish and change patterns of commuting of this sort, however, I have yet to consider, although I note the relevant point about the importance of realistic distribution of assignments of origins and destinations (but that includes the preference of people to live closer to work if they can).
Commercial buildings should indeed have their growth at least partly based on the number of non-commuters that travel to them: that is already planned. Quite how to handle "closing down", however, is another matter, since Simutrans currently does not have a concept of building abandonment or closure, except for industries in Experimental. One possibility might be to downgrade buildings rather than close them down. As to different types of products being bought at shops, I am not sure how well this could be made to work, and I suspect that it would be particularly difficult and time-consuming to balance at the pakset level.
As to journey time tolerance and distance: the current system uses a mixture of both, with trips generated within certain bands of distance and journey time tolerances set for each trip based on which of the three distance bands (local, medium or long-distance) that people fall into. This is not ideal, because the middle distance band in particular ends up with large numbers of people travelling from large towns to neighbouring small towns even though there is very little of interest there, just because it happens to be within the middle distance band. How far that people travel is actually based on (1) how interesting that the things in near or far places are to people; and (2) how long that it takes to get to those places. Distance per se is not part of the calculation (although people can use it as a means of estimating journey time). We thus need to replace distance based distribution with a system that combines how interesting that the destination is (for which "level" is a proxy) and the journey time (for which multiple destinations combined with the journey time tolerance is the method of simulation).