در مورد چرایی این مبحث که play framework از متدهای static برای action استفاده می کند نظرات فراوانی وجود دارد ، که برایند آنها این امر را به علت ماهیت stateless بودن محیط وب و playframework می داند.
اما در مورد سوال شما. در نسخه های قبل تر از 2.1 این امکان وجود نداشت اما از نسخه 2.1 به بعد با افزودن قابلیت dependency injection برای کنترلرها ، امکان استفاده از متدهای غیر استاتیک نیز فراهم شد.
تنها نکته آن این است که در فایل routes باید ابتدای مسیرهایی که به متد غیر استاتیک اشاره می کنند علامت @ اضافه کنید
GET /logout @controllers.SecurityController.logout() #non static
GET / controllers.Assets.at(path="/public", file="/index.html") #static