Joining fee for new memberships
You could include the joining fee in the membership fee, and then give an automatic discount (joining fee amount) for renewals (requires testing).

Or, some custom code could be written to remove the joining fee field/amount if the user is a member.

In both these scenarios the user will need to be logged in.