As i've commented, this is a hard problem, so don't expect a polynomial time algorithm.
But if you're looking for an algorithm that you may be able to compute in acceptable time for the problem instances you mentioned, this might work:
Let G(V,E) be the original graph, let N be the set of nodes that must be visited.
1. Compute the shortest-path matrix M for the entire graph (|V|x|V| matrix that contains
the length of the shortest path between each two nodes).
2. Generate a new graph G`, containing N alone, with the distances between each
two nodes taken from the shortest-path matrix M.
3. Solve the Minimum Weight Hamiltonian Path Problem on G`.
Note that the "hardest" part here is the third part, which takes exponential time. but if the group N is not too big, you'll be able to solve it:
- Bruteforce algorithm will let you solve problems where
N contains about 11 nodes within seconds ( O(|N|!) complexity )
- Dynamic Programming will let you solve problems where
N contains about 20 nodes within seconds ( O(2^|N|*|N|^2) complexity.
You can basically apply any algorithm that solves the Minimum Weight Hamiltonian Path Problem to the third part, these algorithms are usually equivalent to TSP algorithms (the only difference between these problems is that in the TSP you return to the source node after visiting all the other nodes).