From a quick glance, it looks like Artemis keeps all this info in the system itself, and weeds out entities as the system enumerates through all of them. In my case, entities are added/removed from the system (only by the EntityManager), so the system only needs to enumerate through the entities that apply to it.
Being honest, I don't like the way Artemis deals with it. My entity system looks similar to yours, but I store lists of needed components in my systems. For example, a list of CameraComponents and Graphics Components. This way accessing these components is simpler hence I know the type from the beginning.
Problem I had with cloning was a design flaw from my point of view because I had logic in my components. When I changed component to a data storage with utility functions for easiness, the cloning got fixed immediately.
Thank you for the help! I finally have an OK working entity system