Ti rispondo relativamente al problema del layering. Il concetto di repository è mutuato dal Domain Driven Design, ossia una serie di linee guida per strutturare l'architettura dell'applicazione un po' più evoluto del three layer, in cui il focus centrale dell'architettura è il domain layer, costituito da entity, value object, servizi e repository.
Quindi dove vanno le interfacce? beh, nel dominio

Se vuoi approfondire questi concetti, da' pure un'occhiata a ModelVC
http://modelvirtualcasting.codeplex.com/o questi due ottimi libri
http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/Ciao,
m.