Not a professional, but a long term home hair dyer. I think that L'oreal or nice n easy give longer lasting coverage than garnier. If your roots are showing then its the result of hair growth, this will be the same what ever brand of dye you use.
What I suspect you are seeing is that the colour actually fades (as well as some regrowth). And does this quicker at the roots. Especially if you are prone to colouring all your hair each time. Some the mid lengths and ends are being coloured repeatedly, leading to colour build up in the cuticle. Where the colour builds up it appears not to fade as much. So to give the appearance of less fading, you need to avoid repeatedly colouring the whole head. My suggestion is that you attempt to colour the roots only. Mix the dye in a non-metallic bowl, and apply with a tint brush. Apply to the roots only by parting the hair and brushing on the roots only. leave for the full development time, + 5 mins if the hair is very resistant. Then comb through the rest of the hair and then rinse. Long term you should get less appearance of roots fading. You can get away with only using half (or even a third of) a packet of dye. Use a medicine spoon the measure the right proportions. Using this method you do need to use the same colour every time or you will look stripey. Also, unless you enlist help, you will only be able to do the front and sides like this. that's ok if the colour is close to your own. I would try to get to the hair dresser 2-3 times a year for them to do the back for you.
In the past I have used a professional brand called Rusk. I really don't think it was any better.