You should probably be aware that the MY::
package name will be reserved in Perl 6 for getting at your current lexical scope.
On the other hand, your approach isn't so very different from that which Perl 6 will take--private methods and attributes will essentially be off in their own chunk of namespace. Of course, Perl 6 won't need to use source filtering for that...
Anyway, you're on the right track. Now if I could convince you to use My instead of MY, your scripts will be slightly easier to translate to Perl 6.