Just to throw my thoughts into the mix. I worked on projects with each of these approaches. Now I prefer the package over features. There are two main reasons why I prefer this approach:
Ease of induction
Increased visibility of the project structure for developers new to the code base. When classes related to one function are grouped together, it is much easier for a new team member to find out how everything fits together.
Class access restriction
This is probably more important. When you pack by type (all speakers together, etc.), you must provide many methods in these public access classes. This can lead to improper use of these functions from various areas of the code base.
If you are package by function, then these classes are in one package, and thus you can provide access to the package level of methods. This ensures that the methods do not leak.
source share