At my company we do a lot of original hardware designs each of which are designed by only a small sub-section of our engineers. We are looking at ways to better document and distribute what has been done on each project so that information can be distributed and potentially reused. How does your company handle this?
Some EDA tools like the one I use, Altium Designer, provide methods to save varying portions of circuits to make them somewhat portable. For small circuits, you can use "Snippets", or for larger, multi-sheet reuse, "Device Sheets"
I don't know of any standard for hardware schematics (SPICE is too abstract; to my knowledge you can't tie it in with footprints, your part numbers, suppliers, their part numbers...) so any sort of reuse would be highly dependent the EDA package your company uses and the features it provides, or the organizational methods you implement surrounding it.
When you say "hardware" designs, I know you're probably talking about PCB and discrete component solutions, but I have some experience with designing ASICs that may be useful in a conceptual level.
When we design an ASIC that is fairly complicated, we use hierarchy from the beginning. One major reason for that is that as the designs get bigger, your ability to thoroughly evaluate and simulate them decreases. Also, ASIC designs can get quite large, and without a well organized hierarchy it can be difficult to manage the whole design.
We have a strong culture of reuse for our building blocks. For example, if we have an op-amp design that someone spent a lot of time designing and validating, that design would be packaged so that another designer could easily import that design into their own workspace. We have a centralized server for storing these packages, so all the parts you need are easy to find.
While an individual block may have been designed for a specific circuit (e.g. a voltage reference for an op-amp), it usually can be re-used without modifying the original design. The design cycle lasts for a month or longer, and includes validation of a layout. Designing one of these blocks takes time to familiarize oneself with the problem set, so even if the block isn't ideal, you would probably try to use it anyways.
I know TinyCAD allows a schematic to be saved to a hierarchical symbol - you can draw how you want the circuit to be represented in a larger circuit and specify what inputs and outputs there are. Your circuit pretty much shows up as a box with pins in the larger schematic and a simple double click lets you see what's underneath and edit it. All the parts in the sub-circuit show up in the parts list, the netlist has all of the sub-circuit connections, etc. It's been a while, but don't other EDA tools allow this or similar behavior?