Как «обойти» асинхронность в данном примере?
Ваш первый res.send отправляет все заголовки и тело, что завершает вес процесс запрос-ответ и закрывает возможность использовать текущий объект res для отправки чего-либо. В данном случае вам нужно убрать из кода первый вызов res.send и вы получите "Hello 2". Никаих обходов асинхронности, глобальных переменных и прочего вам не нужно. Переменная res будет и так доступна внутри коллбэка, если вы не перекрываете её где-то в области видимости.
Используйте koarouter.get('/', async ctx => {
  ctx.body = await collection.find().toArray(); // при условии, что это вернет promise
});