I am trying to design a MySQL database for a sport clubs (cricket), but if you don't understand that sport it doesn't matter!
The basis of my problem is that the club has a number of members, including playing members, non-playing members and also ex-members all of which I would like to have in the members table.
At the other end of the scale I want to records statistics for matches. In the ER diagram below I have the table which records the stats for each batsman in a match.
The personal data which is specific to that batsman, such as their name, is recorded in the players table. The only reason that I have the names inserted in the players table and not just use the data from the members table is that the players table also displays the names of opposition batsman who aren't members of the club! There is an obvious problem here in that I'm replicating data, such as names, which is not ideal.

The other possible model is shown below. Instead of a player table there is a table for the club's players and a table for opposition players. Although this eradicates data replication I'm not sure if it is a good design. Mainly because I would have to be asking the database questions based on the 2 foreign key fields in the batsmen table (instead of the one with previous design) and that when one of these columns has a value, the other one has to be empty or is NULL which isn't very good design either, or at least I don't think it is!?

I hope from what I have described people can try and give me advice and point me in the right direction or if someone has any alternative siuggestions that would be great. And if I haven't explained myself well then please say so!
I've been trying to work this out for a bit so any suggestions would be appreciated.