It is possible something in 3.9.5 broke the eventlist model populateState function. There is a block of code around line 74 in /models/eventslist.php that deals with applying the limit for lists, including teaser...
# limit/start
if (empty($format) || ($format == 'html')) {
/* in J! 3.3.6 limitstart is removed from request - but we need it! */
if ($app->input->get('limitstart', null, 'int') === null) {
$app->setUserState('com_jem.eventslist.'.$itemid.'.limitstart', 0);
}
$limit = $app->getUserStateFromRequest('com_jem.eventslist.'.$itemid.'.limit', 'limit', $jemsettings->display_num, 'int');
$this->setState('list.limit', $limit);
$limitstart = $app->getUserStateFromRequest('com_jem.eventslist.'.$itemid.'.limitstart', 'limitstart', 0, 'int');
// correct start value if required
$limitstart = $limit ? (int)(floor($limitstart / $limit) * $limit) : 0;
$this->setState('list.start', $limitstart);
}
It seems to indicate developers had to deal with changes in 3.3.6. It is possible something in 3.9.5 also changed.