A good track starts with a good mix. A good mix is needed before any mastering is done on it. The 'dull soft' sound is due to a number of factors and you have mentioned most of them (eq, compression, stereo spread, saturation and volume). As each sound in your mix is different, there are no hard rules to getting this sounding 'bigger'. Different parts of the mix require different processing.
Overlapping frequencies is one cause of sounds sounding dull. As all sounds are wave forms, when two (or more) wave forms collide they can cancel each other out (known as destructive interference). The best way to avoid this is to take into account the frequencies of the sounds and the spatial position.
As a programmer, I code by a rule called "separation of concerns" and I also apply this to music. For instance, when creating sub bass sound, the purpose of the sound is to create a low frequency, therefore it needs no higher frequencies so I eq-out all of the top end (with sub, depending on the sound anywhere above 80-120 hz). With high-hats (and other high frequencies), I eq out all the bottom and some of the low mids. To be honest, I eq-out all of my sounds below the 60-80hz mark (apart from the sub of course) as the only low end I want in the mix comes from the sub. If you have two instruments that occupy a similar frequency range, you can change the spatial position using panning and other techniques/tools. This all helps to keep the sounds clean and out of each others way so they can sound their best. It helps them all sound and fit nicely together in the mix as you don't tend to have too many overlapping frequencies causing issues.
Eq-ing sweeping to find 'sweet spots' can also bring out the character of a sound. To do this, chose a fairly narrow 'q' setting on the eq and set the gain high and sweep through the sound until you hear it sounding overly brighter/punchier etc. Keep it on that frequency 'sweet spot' and then reduce the gain to a decent level. This is also useful to do to remove and resonance in sounds that could occur when it is played at high volume (in clubs for instance), to do this, just listen for frequencies that make it sound resonant at high gains and then do an eq-cut at that frequency with a narrow 'q'.
One other very important thing is that if you are using samples, the quality of the sample is very important (you can't polish a turd as they say) so eq-ing to find and boost frequencies that are not there is futile. Always pick the best sample for the job and then tweak it.
The range of frequencies of your track will also have a big effect, to bring out the low end of a track, it needs to be balanced with a decent amount of high end. It is all about balance. A good way to learn is to take a track you like the sound of and put a frequency analyser on it and compare it to a another frequency analyser on your track, You can use this to see what frequencies are missing in your track.
One other tip, lower frequencies (like kick drums and sub bass) tend to be in mono whilst higher frequencies have more stereo spread which helps give it a 'wider' feel (especially in dance music). Think of the sound as a funnel shape with the lower frequencies central (mono) at the bottom and the higher frequencies, spreading out, at the top. With modern music, especially dance, there are a few things that are important; width (stereo spread), height (volume/loudness), depth (reverb etc.), range of frequencies within the track and dynamics. Pendulum were very good at maxing out all of these qualities giving it a 'wall of sound' feel. Whether this is deemed 'good' or not is debatable and subjective. It takes a lot of time and patience to get it sounding the way you want. Don't be afraid to experiment and just enjoy the process.
Once a good mix is in place with all the sounds fitting nicely together you can start thinking about adding things like compressors and limiters to the overall mix (note: more often than not you will have compressors on certain instruments as well). The best way to do this, I found is to just use your ears, add a compressor, tweak the settings and constantly a/b it, i.e. turn it off and on to see if sounds better. As I am not a mastering engineer however (and don't have the equipment) I tend to just send this off to a mastering engineer who knows what he's doing :-) but it is a good learning experience to experiment yourself.
p.s. I am not a huge fan of reason (although it can be used to produce decent tracks). This is because I use a lot of 3rd party vst plugins and effects which is not supported in Reason and limits its usefulness to me. I was using an older version however so Rack Extensions may provide more flexibility in v6 (but I haven't read too much into it).