I\'m creating this question after finding the answer, I was not sure about the etiquette, but it seems to be OK (plus, I see now there\'s a built-in option).
The pro
After some time I used the solution found here, and there was only one icon that was working properly. As I wrote in the question, I could not use this solution because it lacks the flexibility I needed, so after looking at the code I saw that what was missing was this:
intentWaze.setPackage("com.waze");
// and more importantly, this:
intentGoogleNav.setPackage("com.google.android.apps.maps");
It seems that Waze is listening to the Google Maps intent (and does not work well with it), and that's why there were two icons.