What do you mean by 'circular'? File A needs file B and file B needs file A? I have indeed seen another post about that (I think for OpenOffice) in combination with RPM. You should not rpm every single file, but all files in one go.
Or do you mean file A needs file B needs file C needs file D etc etc etc (which is NOT circular)?
I think that you underestimate the implications when adding the dependencies to the package.
Suppose that a program is written in Java. So you now want the developer to supply you with Java as well. OK, but for a 10kByte program you now need a 500kByte package (fictive number, I don't know the size of it). And that's for every program that uses Java. Very nice when you have to download packages over a 56k modem.
the program requires GTK or Qt (both graphical libraries). So you want the developer to include that in the package. I will leave out the fact that your distro did not supply X or had an old version which would require the developer to include X as well.
And you might not need that part as you already have the required stuff installed. What a waste.