You can defintely have different event reveivers in the same solution/WSP package.
A WSP is a container that groups one or more features + independant artefacts lile DLL(s) _layouts pages, images or .js files.
An event receiver is a C# class: you can create as many classes as you want in the DLL. You can even have different ER events in the same class, like one ItemCheckedIn
and one ItemAdded
methods.
Also, if all the lists share the same ER logic, you actually need only one ItemAdded
: the ER code can obvisouly be shared between different lists: it's only the code logic and it can run in different contexts, at the same time, etc.
The main difficulty is actually how to register the correct ER to the correct list.
This can be done in two ways:
- declaratively (by the mean of a special XML file hosted by the feature). This requires you to know at design-time the IDs of the lists, or to attach the ER to all lists from a given type. This is not always possible.
- the imperative/code approach. This required you to add a feature ER. A feature ER is a piece of C# code associated to your feature. It will run once when the feature is activated. In the code, you identify the lists you want to attach the list ER to, and you attach your class to them. See https://sharepoint.stackexchange.com/a/166683/35604 for more details.