I was playing with a freighter, and inspite of having a mule, i simply ran out of cargo space (blame the damaged goods) in Sanctuary system. So i decided to search for a Tinker in the later stations and revert to the previous stations to loot if i found one. And guess what, I didn't find A SINGLE TINKER till HD44594 (just before Heretic). I thoroughly checked the dual-systems, used system map ROMs, but no luck

I guess the probability of stations spawning in a system is based on a random seed. But I guess we should be given access to a tinker every 2-3 systems just to dispose things off.

Meaning that they are uncommon at level 1, 4, and 5 star systems. Common at level 2 and 3 star systems. And rare at level 6 star systems, which also happens to be the last level they spawn in.
In game terms, it means Tinkers can't appear after Jiang's Star. All Outer Realm star systems are level 7 and above which Tinkers can't spawn in. So you'll need to backtrack if you still want to sell damaged goods.

I'm not sure how you found a tinker station in HD 44594 since thats a level 10 star system.

It's best that some things be left to chance, considering this is a roguelike. If every good thing is certain to show up, there's always going to be one best strategy through the game. Indeed, I'd prefer a system be implemented that outright restricts some items from spawning in a given playthrough, perhaps as a manner of "hardcore" mode. If you'd like to mod in a way that forces a certain station to appear, the simplest method is to add one to one of the systems that are certain to appear, or add a system that is certain to appear and put a tinker in it.

Chance is why CSCs and Point Juno stock Hyperions for sale sometime after 1.03. It really hurt when a Ringer Shipyard did not spawn and you could not obtain the 1 GW Hyperion any other way. Well, back before 1.1, Teraton fabricator could get you one, but it was a long shot due to the much more common megadrive in the item pool; not to mention how the fabricator worked was arcane, and player needed to be "spoiled" to use it effectively.

c = common, has a weight of 20
u = uncommon, has a weight of 10
r = rare, has a weight of 4
v = veryrare, has a weight of 1
- = notrandom, has a weight of 0