Concerning unneeded methods in parent classes:
Aren't they a sign of bad architecture? I mean shouldn't you isolate in the planing stage functionalities needed by each class and then have a chain of classes derived one from another?
For example we have class A, B, C and D. Class A has methods classes B, C and D need. Class B has methods class D needs. So we could derive class D from B and B from A. On the other hand we will derive C from A because C doesn't need the stuff B has. So we basically solved problem of having unneeded stuff by adding one extra class in hierarchy. Of course if something like this wasn't caught in the planning stage and class B was used as base class, it would be more difficult to split class B into two classes, but with some extra effort the problem of unneeded baggage is solved.