Mount points are possible – but they have the same limitations as drive letters. You will have D: that's one disk, and D:\Stuff as another disk, but you cannot "interleave" everything into a single list, and you run out of space in one disk, it won't automatically expand to another.
Junctions are slightly more flexible as they don't have to point to the root of a disk; they can point to subfolders – so it's possible to have multiple. You'll still have two independent disks, but e.g. you can arrange that D:\Video\Movies\Old and D:\Games\Foobar both point to different parts of disk E:.
So instead, what you're looking for is some form of logical volume management. Windows has two built-in in features for this: "Dynamic disks" (available through diskmgmt.msc since Win2000) and "Storage spaces" (available since Win8.1). Both allow you to expand a volume across multiple disks, as well as implement a few RAID types.
Side note: RAID doesn't have to be hardware-based. Indeed many consumer-grade motherboards have "fake RAID" which is implemented entirely within the Windows driver. Dedicated software RAID implementations, such as mdraid on Linux, may even work more reliably than hardware controllers. But in this case you don't need RAID (and cannot really use it due to differently sized disks), you only need a plain 'JBOD' mode.
Overall I've heard more good things about Storage Spaces. Unfortunately it is not available for Win7 and in any case requires a whole disk – you couldn't use D: as part of a Space while keeping C: intact, and Windows cannot boot from a Space either.
So you're left with "Dynamic disks". The diskmgmt.msc tool allows converting a regular MBR/GPT disk to this format non-destructively, after that you could delete E: and "expand" D: into the newly available empty area.
(However, while I know that this feature exists, I haven't used it in practice and only heard poor descriptions of its performance, so I'll stop short of recommending it.)