I've been thinking about virtual patching methods for this exploit for awhile now, but I am unable to test it out myself and do the reversing on the internals because I am not experienced with things relating to Metasploit (never even used Metasploit in my life nor am I ashamed of having lack of knowledge on that).
However for the lsass.exe target one idea I've thought of would be to detect thread creation from kernel-mode via kernel-mode callbacks (for x64 support); you can use this to identify thread creation within the lsass.exe process... Then apply some potential filtering and block this if deemed the thread should not have been created - since the newly created remote thread would be responsible for executing the injected code which could manual map another malicious DLL and the such (e.g. like in this case with the DLL being injected, it should work by using the injected code on the new thread be responsible for loading the DLL).
Only problem with the above is that you cannot do it for all the processes since it would cause issues, you never know when a program will create a new thread to execute code simultaneously... (e.g. threading to run code at same time within a process to speed things up, like AV scanners use multiple threads).. And you never know what process will be targeted by the exploit (assuming it doesn't have to be lsass.exe) so it is quite tricky.
I guess another idea would be verification for all DLLs loaded within system processes (e.g. require code signing authenticity) but an attacker can buy one or steal them/use an exploited one they bought online so that one is tricky too since it would be far from full proof.
I guess the only real solution would be on MS part with patching (did they already patch the SMB issue?).
Maybe my ideas were just useless though, I really am not sure on this one.