I found this project which looks promising:
It includes a tool which can pack a directory into a .wasm file, and then you can read that directory from within the Wasm code itself.
Right now it's not a priority to look into, given that I added BASIC-READ and BASIC-WRITE to the WASI build. If someone can prove the limit to using WASI effectively is that they have to distribute their project as a .zip and grant the runtime directory access (instead of as a single .wasm file) that seems like the time to attack it.
So... far future.