Как сделать так, чтобы одновременно могло работать не более одного экземпляра функции?
Вы чо ребята?! Это же debounce с кешем результата.
Создайте класс и используйте паттерн Singleton.
Можно, конечно, реализовать и функцию, но способы достаточно костыльные. Правильное решение - класс с реализованным паттерном.
Реализация функции, только нужно запомнить состояние самого 1 вызова функции:
var something = (function() {
    var executed = false;
    return function() {
        if (!executed) {
            executed = true;
            // do something
        }
    };
})();
something(); // "do something" happens
something(); // nothing happens