Found the answer myself. Everything is based on subclassing the PaperTrail::Version and using the :class_name option. My working configuration is:
class City < ActiveRecord::Base
has_paper_trail, :class_name => 'Version'
end
class User < ActiveRecord::Base
has_many :editions, :foreign_key => 'whodunnit', :class_name => "Version"
end
class Version < PaperTrail::Version
belongs_to :user, :foreign_key => 'whodunnit'
end
And now when calling user for a specific version it returns the user whodunnit instance
City.first.versions.last.user
=> #<User id: 2, email: "xxxxxx@yyyyy.com", encrypted_password: ...>