Alfresco should be a great solution. It maintains each of your requirements lists, except government.
But if you are building from scratch, perhaps take ideas from it, at least?
Storage: The contents of the file are saved in the file system. Easy to manage, store, backup and more. Files do not save names, although their contents are stored in binary format, and the file is called a hash (I assume a hash of the contents?)
Metadata: placed in the database. Quick access, change, update and more. Each node has properties - this is the name, name, description, dates, audit information, everything you need. This is just information, and all this is stored in the property table.
Search: Alfresco uses Solr to search, it was Lucene. I had quite large installations, and if you put the lucene index on the SSD, it quickly flashed. (lucene is fast anyway). It indexes the contents and properties of the file - so that you quickly reach the node identifier.
Alfresco implements CIFS, as well as webdav, ftp and much more. The fact is that you can simply install it on users' desktop computers in the form of folders or disks.
There is a web interface, there is a central mgmt repo, all the requirements. And since it is open source, you can get some of this source and use it in your project. Although it would be much better to take the "Alfresco Community" and contribute a bit if you feel good.