Query goes in Copying to tmp table stauts in MySQL and never returns
(I can't explain why one call was 'fast' and the other was 'slow'.)

The "copying to tmp table" provides virtually no useful info.  It may be saying that it is busy shoveling around more than 50 (re: LIMIT) rows collected from the 4 tables.  My fix, below, mitigates that.

Try the following rewrite as an attempt to speed things up.

First -- Find the ids for "Taylor Swift" songs.  (But would that be in the title??)
Second -- Get the rest of the data and do the JOINs.

The rationale -- Get the complex, slow, parts of the query over with before rummaging around in multiple tables.

SELECT ...
    FROM ( SELECT id FROM tbl_songs
        WHERE ( MATCH (song_title) AGAINST ('taylor swift*' IN BOOLEAN MODE)) 
          AND (CONCAT(song_title) LIKE '%taylor swift%') 
          AND song_status = 1
        ORDER BY s.song_title = 'taylor swift' desc
        LIMIT 50 ) AS s1
    JOIN tbl_songs AS s2  ON s1.id = s2.id
    JOIN ... the-other-tables
        ON ...
    WHERE  ...  the-filtering
    ORDER BY s.song_title = 'taylor swift' desc 
    LIMIT 50


Yes, the ORDER BY and LIMIT are needed twice.

The hope is that MATCH is performed first, leading to much fewer rows to apply the LIKE to.  Please provide EXPLAIN SELECT ....

The 1=1 is a common technique for building the WHERE clause.  It is harmless, but it would be better to gather an array of AND clauses and put them together at the end, not building a string as you go.

Check innodb_buffer_pool_size -- is it about 70% of available RAM?