Your error is to do with the type of object that you are passing to your webservice. VB.NET is rather particular in what you can pass to it. I would have a look at this article You must implement a default accessor on System.Array b...
It would appear that you need to change the array to a generic list, there is an example of this in the article. Also to return a true dataset you will need to change
to, as the above will return a Diffgram
return ctype(ds, dataset)