It's a little more complicated than that.
I have a multi-site setup.
I need different themes for each wpmu 'site.'
Example: Domain1.com & Domain2.com running on the same WordPress as sites (not blogs).
I have Theme1, Theme2, Theme3, Theme4, and PremiumTheme1.
Let's say that I want all themes, except for PremiumTheme1 to show up in the 'Site Admin' for Domain1.com, and I only want Theme1, Theme2, and PremiumTheme1 to be able to be visible on Domain2.com (both in themes.php and wpmu-themes.php).
I don't want Site Admins on Domain1.com to be able to even see the themes available to Domain2.com (and vice-versa).
I'd imagine a filter on the get_themes function would be able to do the trick but there isn't one and I don't want to modify the core.
EDIT: http://core.trac.wordpress.org/ticket/12195
Looks like Scribu added the changes to the WordPress trac as a patch for 3.0.