Atualização: Acabei de notar que esta seção no manual do mod_rewrite, que descreve bastante muito um cenário que se encaixa no seu caso de uso
Eu posso pensar em duas opções no apache e, em seguida, uma terceira é voltar para um script bash para gerar os aliases corretos condicionalmente.
1) A melhor maneira, obviamente, é usar mod_rewrite para re-escrever a requisição condicionalmente.
Minha primeira ideia seria uma captura brutal, para capturar qualquer arquivo que faltasse, e redirecioná-lo para a localização padrão do caminho do arquivo;
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-d
RewriteRule ^/skins/(.*)$ /home/public/skins/admin/$1
2) use mod_perl para selecionar condicionalmente os aliases com uma sub-rotina inline-perl
3) use bash
for foo in user1 user2 user3; do
[ ! -d /home/someuser/skins -a ! -L /home/someuser/skins ] && ln -s /home/public/skins /home/someuser/skins
done
(há uma nota sobre sinalizadores de substituição, se você quiser misturar sinalizadores mod_alias e mod_rewrite em docs ... link )