Since you already know its a great tool,
it is a great tool because you can customize it in any way you want. The Dude's automatic functions
are what they are. They cant predict or detect everything in a way thats unique to your network, nor read your mind. However, your mind can make Dude do things it even didnt think of
How could it possibly recognize passive hubs? They are transparent to the network, and therefore to the Dude and any other program.
You can add anything you want manually. Dont really know what you mean by adding network segments, but you could elaborate. There are static icons that can be used as dummy devices and/or placeholders. You can link a device to a 'nothing' static object, and monitor the bandwidth to the object that doesnt exist. This is a workaround for different network conditions and limitations. Therefore, a single device can have multiple links connected to it and it solves #1 and #2. Links need manual intervention.
Recognizing devices...Seems like you are depending on discovery. The device icon allows you to do exactly what you want. Just eliminate the multiples, and add IPs to the single device. Consider a 24 port switch with multiple VLANs with corresponding IP addresses. You can link to any individual port or VLAN. A 24 port switch has 24 'NICS'. It just detects a single (router or switch) device. Why cant you link a single device to multiple networks? Just link them.
Selection of device shapes seems to be rather arbitrary. Again consider a managed layer-3 switch. It is a router and a switch. Which will it turn out to be? Who knows. Just make it correct.
You also can create custom device images that are specific to your network. Sometimes device images arent desirable at all. A dense map might not have the screen space for images. I am sure you know what those devices are. If they must be displayed for cosmetic and user reasons, create small device symbols, or breakdown the map into smaller pieces.
Keep trying, and think about the network and devices as objects, and you will be surprised at what you can make it do. In the programming world there is a relevant concept that in a way applies to Dude development -- garbage in, garbage out. If you make an error in a program, it will faithfully execute that code and deliver the wrong information every time. So because the Dude program must be neutral, it analyzes networks at the least common denominator level. If it didnt, it would have to make assumptions about all networks, and we certainly dont want it thinking for us, just faithfully monitoring our networks. We just have to
put in (input) good information for it to process, in order to
get out (output) accurate network monitoring.