Restore System Databases from MDF/LOG files
msdb and model you may be able to recover data from by following the same process as you would if moving them. Use a test/dev instance for a dry run.


Stop SQL
Start with trace flag 3608 (master only recovery mode) NET START MSSQLSERVER /f /T3608
ALTER DATABASE msdb|model MODIFY FILE( NAME=xyz, FILENAME='filepath')
Stop SQL, move files in to place, restart SQL


KB914171 details one possible error that may be reported and a fix/workaround by:

use msdb
go
delete from msdb.dbo.syssubsystems
exec msdb.dbo.sp_verify_subsystems 1
go