Во-первых, почитайте про vk callback api. На основе асинхронного веб-сервера типа aiohttp или tornado будет очень быстро.
Во-вторых, на сколько я понял, вы хотели использовать список вместо очереди. Не нужно. Если уж использовать, то хотя бы queue.Queue.
В-третьих, первый вариант явно провальный, будет работать не очень круто, если даже заставите хоть как-то работать. Второй вариант выглядит более логичным, если всё таки решите использовать лонгпулл, но здесь без многоточности/многопроцессорности, думаю, не обойтись.
В итоге: если делать через лонгпулл самый простой вариант - один процесс/поток с бесконечным циклом, который делает await session.get(longpoll_url).json(), далее ЛИБО добавляет задания в очередь для хендлера, который работает во втором процессе с таким же бесконечным циклом, ЛИБО порождает новый поток/процесс для каждого нового сообщения. Но здесь сразу же, даже до этапа проектирования, видно много узких мест. Если делать через колбек - узких мест, фактически, нет. Например, многопроцессорный асинхронный торнадо (но уступающий в однопотоке по-умолчанию асинхронному aiohttp), справится с любой нагрузкой, узких мест нет, он, по сути, сам в своих потоках/процессах будет разгребать новые запросы, вам об этом думать будет не надо.