John,
In one of your code snippets you're referencing the function as "nikias.testcache.TopTenListFunction" but in another snippet you just have "testcache.TopTenListFunction". Are you using the correct ID?
In a typical situation, calling a function from a client will always execute the function on a server. Only if the client is also a peer could a function execute on a 'client'. In your setup, however, that is not the case.
To answer Q2 - the refid has no bearing on where the function is executed.
In response to Q3 - should be answerd, but perhaps it would be useful for you to look at groups which let you associate a logical grouping to your servers and allow you to execute functions against a single or multiple groups.
--Jens