This one is challenging, but I think I've come up with a solution, if this isn't exactly what you were looking for, hopefully you can tweak it to fit your needs.
The best thing I can come up with - that has no loop holes or double counting:
1. Create a custom field called "Clicked in Email in Last Value Days" or whatever you want it to be called.
2. To prevent the double-counting you were concerned about you'll have to subtract the score before assigning new ones however often you want the value updated.
So you'll need campaigns which:
A. Subtracts 10 if the custom field's value was 7.
B. Subtracts 5 if the custom field's value was 14.
C. Subtracts 2 if the custom field's value was 30.
3. Three campaigns would then run (after subtracting the score), IN THE FOLLOWING ORDER, and designate the value of this field.
A. If the lead has clicked a link in the email in the last 30 days, give it the value "30",
B. If the lead has clicked a link in the email in the last 14 days, give it the value "14",
C. If the lead has clicked a link in the email in the last 7 days, give it the value "7"
4. Then you'd want campaigns which assign new scores.
A. If the custom field value is 30, add score 2
B. If the custom field value is 14, add score 5
C. If the custom field value is 7, and score 10
I'm afraid that's the best I can come up with. It involves a lot of campaigns, so it wouldn't be very practical if you had a significant number of leads you were running this through. I'm pretty new, so hopefully there's a better method someone else can come up with.