Just a thought...
First, in each shape, having a shapesheet entry, e.g., a User cell, to hold shape revision. When a shape is revised/updated, this cell gets updated.
Second, write some code, when a shape in an open drawing is updated, the shape in the document stencil ought to be updated or new version created. Code could flush the update to the shapesheet cell in all stencils in the current Visio document. Perhaps a database file created/exists that code writes to indicating revision level & stencil name.
Third, for remaining stencils, perhaps some code that goes thru stencil directory compares shapes on all stencils with database, and updates stencils. This probably has to be done from within Visio, so could take a long time. Alternative, when a Visio file opened, only used stencils compared to database and updated.
At any rate, this would take some planning and coding.