You don't even need to make a new ROM. Someone on Sega's own blog comments posted the fucking code for it:
Hey Sega, want to figure out how to lock on the Sonic 3 and Sonic & Knuckles ROMs without storing an extra 4MB ROM image? Heres how!
/* Super amazing lock-on ROM functionality!
* This would take Sega over 9,000 hours to write,
* but any half-decent programmer could do it in 5 minutes! */
unsigned char ROM[0×400000]; // 4 MB ROM buffer.
FILE *sk = f open(sonic_and_knuckles.bin, rb); // open the Sonic & Knuckles ROM
fread(&ROM[0], 1, 0×200000, sk);
fclose(sk);
FILE *s3 = f open(sonic_3.bin, rb); // open the Sonic 3 ROM
fread(&ROM[0×200000], 1, 0×200000, sk);
fclose(s3);
Wow! Amazing! And it works, too! Perhaps you should hire better developers.
Ice burn.