the answer is .. yes .. version 4.0, out of the box will allow you to do what you want.
The revolutionary thing about version 4.0 of the Repository module is that for each 'view' you can designate a DataContext. In most, if not all, current modules, the data context is set automatically as records residing in the module's table with a moduleid that matches the moduleid of the module instance. Of course that allows you to have 2 instances of the same module type on a page and each one storing it's data in the same table, but the moduleid column associates each item with the appropriate instance.
In version 4, the default DataContext for a repository module instance is also the moduleid, however, you can provide custom views with a DataContext that filters based on any column in the table, so you can have multiple repository instances on your site each one filtered on a column like 'categoryID'. That way a specific repository module instance will only show items from a certain category, just like you want it to.
You can have a single 'Upload' view where people upload items, and all uploaded items are stored in the same data table and a 'Display' view that displays all items within a specific category, even it it was uploaded via a different instance of a repository module.