Yes, the reason the function pointer for a function within a type is the same, is that it creates one function for the `type`, not for the instances. You reference it with mytype.function() rather than something like myinstance.function(). They all share the same function.
Thing is, even if you had a method pointer, there probably also would only be one method for the type shared amongst all the instances of the type. Otherwise, to have an actual piece of machine code for every type instance, you'd have to be able to move chunks of code around at runtime, relocate them, reassign any changes in for example the address of labels, get the cache flushed out so that it can be executed, etc... plus what Dreamora said about the pointers moving and not being kept consistent. I'm sure there's other issues too. It would be cool though.
Thing is, even if you had a method pointer, there probably also would only be one method for the type shared amongst all the instances of the type. Otherwise, to have an actual piece of machine code for every type instance, you'd have to be able to move chunks of code around at runtime, relocate them, reassign any changes in for example the address of labels, get the cache flushed out so that it can be executed, etc... plus what Dreamora said about the pointers moving and not being kept consistent. I'm sure there's other issues too. It would be cool though.