Что касается вашего конкретного примера, «метод вычисления лучшего сотрудника года (1000 строк кода со сложной логикой) ... где я должен его определить и кто будет его называть?»
Для такого большого количества кода я, вероятно, сделал бы новый модуль (возможно, rating.py) и поместил бы его туда. Кто будет звонить, зависит от того, как вы его используете, но я думаю, что это будет вызвано одним из ваших взглядов.