Dynamo and grasshopper are very similar in how they function, you are working with DATA. The graph of nodes is pure data manipulation in both graphical algorithm editors. You take some data, do some change to that data and you have some resultant data. This data may be geometric data like a points value, or it could be mathematical data, or any other pertinent data.
A difference between the two is as you said that the Revit geometry has additional properties for each element, in rhino you have mostly geometric data (so the endpoints of a curve) where in Revit you have a beam. The Revit beam has endpoints too, but the beam family has properties such as the mark number for instance which you can get and set with some data. Beam is just an example. I see Revit elements more like using objects in programming with get/set methods for properties.
As for looping, Grasshopper has looping algorithms such as hoopsnake or anemone or you can write your own with a timer block and VB/C#. But you are correct in thinking that the graph is linear which is the same as Dynamo. Grasshopper also has tools like Galapagos, Karamba and kangaroo, very useful tools in my opinion. Whereas Dynamo has seamless integration with Revit and the API.
There are some other differences between the two editors, one being how data is stored in trees or nested lists, they are similar but not entirely the same. There are computation speed differences also amongst other slight differences. Someone has probably compared them with some degree of scrutiny if you want to see what other differences there are, but they are both great tools and have their respective merits. I personally use either depending on what I need to do to get the job done.