$wp_query->current_post restarts from zero on paged pages

$wp_query->current_post holds information about current post in loop, not global set of posts. Numering posts across multiple pages is not available natively (as far as I know) and probably would be to unreliable (for example what if number of posts per page changes is customized to be uneven?).

For specific implementation building custom numbering, based on page number is probably indeed only option.

As for stickies you can retrieve their count with something like count( get_option('sticky_posts') ) and adjust your numbering by that.