Con una consulta Join como esta, tengo los mismos resultados y funciona :) Todavía no sé por qué las consultas anidadas tardaron entre 40 y 50 segundos. ¡Gracias al usuario Dibakar Paul que me ayudó!
$sql1 = "Select distinct title, artist, album
from songs where id not in(Select distinct song.id
from songs song inner join playlist playlist
on playlist.song_id=song.id
inner join playlists playlists
on playlists.playlist_id=playlist.playlist_id
and playlists.name = '$playlist_name')";
$sql2 = "Select distinct song.title, song.artist, song.album
from songs song inner join playlist playlist
on playlist.song_id=song.id
inner join playlists playlists
on playlists.playlist_id=playlist.playlist_id
and playlists.name = '$playlist_name'";